[part 1] 第一个 Django 应用
概述#
本项目依据官网指南概述而成,
Django
版本2.2.3
- 前台展示,访问者查看民意调查并在其中投票
- 后台管理,允许您对调查结果进行增删改
创建项目#
使用框架命令工具
django-admin
创建项目目录骨架
pip install -U django
python -m django --version
django-admin startproject mysite
- 项目结构
外层
mysite
项目目录,内层mysite
应用目录,manage.py
管理Django
命令行交互
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
- 启动 web 服务
进入项目目录,以下三条命令皆可以开启 web 服务
第一条命令,默认 web 服务访问的端口是 8000
第二条则指定是更改端口为 8080,通常是在端口冲突的情况下使用
第三条意味着是可以通过局域网其他终端访问本机的 web 服务,其 0 是 0.0.0.0 广播
python manage.py runserver
python manage.py runserver 8080
python manage.py runserver 0:8000
创建应用#
- 项目 (站点) vs 应用
- web 应用有数据库存储,weblog 系统
- 项目是一个包含特定站点应用和配置的集合
- 一个项目包含多个应用,一个应用可以在多个项目中
换句话而言,由
django-admin
生成是项目 (或站点),而由python manage.py
创建为应用
python manage.py startapp polls
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
创建视图#
- polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
配置 UrlConf
#
- 将应用的
urlconf
配置指向项目根urlconf
,以便Django
通过配置路由可以找到视图 - 在
polls
文件夹下新增urls
配置文件polls/urls.py
文件,django.urls.include
函数导入url
配置
# polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
# mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
重新启用 web 服务
python manage.py runserver
访问http://localhost:8000/polls/
可见自定义视图
附录#
django.urls.include
函数允许引入外部 url 配置,将path
方法正则匹配到的 url 发送到映射处理器_path(route, view, kwargs=None, name=None, Pattern=None)
- 该方法是
django.urls.path
原型 route
一个包含url
正则的字符串,Django
会从urlpatterns
列表中依次匹配- 需要注意的是它并不关心
http
谓词GET/POST
- 需要注意的是它并不关心
view
若匹配正则,会调用一个视图函数,该视图函数默认的第一个参数是一个HttpRequest
对象path() argument: name
命名参数,方便在其他的地方引用,类似于其他同类框架中的命名路由
- 该方法是
源码#
本作品采用《CC 协议》,转载必须注明作者和本文链接