Django -- Polls - Part 1
2018-03-19 本文已影响0人
liaozb1996
- 创建项目结构
- 创建 APP -- Polls 结构
- 创建视图 View
- 配置/声明 URL -- URLconf
投票系统
该网站包括两部分:
- 公共站点:展示内容和进行投票
- 管理后台:添加/修改/删除投票内容
创建项目
$ mkdir polls_website
$ cd polls_website/
$ pipenv --three install Django
$ pipenv shell
$ django-admin startproject mysite
项目的名字不能是 django ( 和django 本身冲突) 或 test (和 python 模块冲突)
不能将项目的代码放在web服务的根目录
/var/www
目录结构
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
- manage.py : 管理项目的工具
- settings.py:项目的配置文件
- urls.py:URL声明文件,将URL与视图函数关联起来
- wsgi.py:配置 Django 与 Web Server 之间的 WSGI 接口
Development Server
$ cd mysite/
$ python manage.py runserver
Django
Django 自带的测试Web服务器仅适用于开发过程,不适用于生产环境
更多参数:默认监听 127.0.0.1:8000
$ python manage.py runserver 8080 # 修改监听端口
$ python manage.py runserver 0:8080 # 监听所有网卡,相当于 0.0.0.0:8080
测试服务器会自动重新载入修改的 Python 文件;但当新创建文件时,还是要重启测试服务器,才能生效
创建 APP
在项目的根目录下创建APP
$ ls
db.sqlite3 manage.py mysite
$ python manage.py startapp polls
注意,在项目的根目录下创建APP,使 polls 和 mysite 成为两个独立的 Python Package:这样,导入时可以使用
import polls
,而不是import mysite.polls
Project 和 APP
项目相当于整个网站,而项目由多个APP构成,每个APP实现独立的功能(博客系统,评论系统,支付系统);APP可以重用于其他项目中
创建视图
# polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World -- Polls")
声明 URL
#新建 polls/urls.py -- URLconf
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
# mysite/urls.py -- root URLconf
from django.contrib import admin
from django.urls import path, include # 导入include
urlpatterns = [
path('polls/', include('polls.urls')), # 指向 polls/urls.py
path('admin/', admin.site.urls),
]
Polls
root URLconf 会把匹配到的 URL 部分去掉,并将剩余部分传给指定的 URLconf
URLconf
path() 参数
-
route
: 定义要匹配的URL(除去域名),在 urlpatterns 从上到下匹配 -
view
:调用对应的 view 函数,并传给函数第一个参数 HttpRequest (可用于获取请求信息,GET,POST 数据等) -
kwargs
:将键值对以字典形式传给 view 函数 -
name
:给URL命名,然后可以在模板用name
引用 URL