-
创建项目:
django-admin startproject my-app
目录结构如下:
. ├── HelloWorld 项目目录,包名为HelloWorld │ ├── __init__.py 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包 │ ├── __pycache__ 临时文件 │ │ ├── __init__.cpython-38.pyc │ │ ├── settings.cpython-38.pyc │ │ ├── urls.cpython-38.pyc │ │ ├── view.cpython-38.pyc │ │ └── wsgi.cpython-38.pyc │ ├── asgi.py │ ├── settings.py 配置文件 │ ├── urls.py URL调度器,路由器 │ ├── view.py │ └── wsgi.py ├── db.sqlite3 临时文件 └── manage.py 项目管理工具
-
启动服务
python manage.py runserver
-
创建app
一个projects是多个相关的app的集合,一个app也可以属于多个project。
python manage.py startapp polls
查看目录结构
./polls ├── __init__.py ├── admin.py ├── apps.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py
消息分发 --- urls.py
一个app可以看做是一个模块,从顶级的url向下级分发,当包括其它 URL 模式时你应该总是使用
include()
,admin.site.urls
是唯一例外。项目urls.py中的path include app的urls
# 项目的urls.py urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]
app的urls中path绑定到相应的处理函数
# app的urls.py urlpatterns = [ path('get/', views.get, name='get'), path('post/', views.post, name='post'), ]
path函数具有四个参数,第一个参数为route会匹配url,当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个
HttpRequest
对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。kwargs: 任意个关键字参数可以作为一个字典传递给目标视图函数。name: 为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。请求处理 --- views.py
from django.http import HttpResponse # Create your views here. def get(request): data = request.GET['data'] print(data) return HttpResponse("hello world %s." % data) def post(request): data = request.body print(data) return HttpResponse(data)
类似于Java中的controller,匹配URL,执行对应的逻辑
-
配置数据库
setting.py
文件中设置DATABASE
属性,默认使用SQLite。models.py
内创建数据模型from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
链接app与project
INSTALLED_APPS = [ 'polls.apps.PollsConfig', ... ]
创建models
python manage.py makemigrations polls
根据models创建相应的表
python manage.py sqlmigrate polls 0001
Django 为我们创建的各种 API
Question.objects.all() q = Question(question_text="What's new?", pub_date=timezone.now()) q.save() Question.objects.filter(id=1) Question.objects.filter(question_text__startswith='What') ...
框架自动为我们创建了各种操作数据的api,类似于JPA为我们自动映射的各种方法。
-
Django管理页面
创建管理员账号
python manage.py createsuperuser
根据提示创建admin账号,创建后即可登录。
Register your models,将表交给admin管理,可以在页面中管理数据。
from django.contrib import admin # Register your models here. from .models import Question admin.site.register(Question)
-
templates
对于前后端分离的项目不需要在Python中实现前端页面,所以templates相关知识跳过。
-
自定义后台表单
Django为我们提供了默认的后台表单样式但是也允许我们自定义后台的样式和结构,不是太重要相关知识跳过。
-
打包app
使用pip工具setuptools,默认已经安装。
打包需要哪些文件?
(1)README.rst描述你的包是干什么用的,如何使用
(2)LICENSE授权许可
(3)setup.cfg执行打包命令时需要的配置文件,描述包的信息(包名,版本,作者信息)
(4)setup.py封装打包命令
打包命令是什么?
打包到sdist目录中
python setup.py sdist
如何使用自己打包的app?
安装
pip install --user django-polls/dist/django-polls-0.1.tar.gz
卸载
pip uninstall django-polls
Django框架快速学习
最新推荐文章于 2024-03-05 15:39:19 发布