该应用为一个基本的投票应用程序,由两部分组成:
- 一个让用户查看和投票的网站
- 添加,删除,修改的管理后台
假定你已经按照前面的文章安装了Django,可以通过此命令查看Django版本
python -m django --version
如果输出版本号,则证明已经成功安装Django,如果提示"No module named django"则表明未安装Django,请参考Python之Django系列-快速安装-2
该系列教程已Django版本为3.1.8,支持Python3.6及后续版本,如果Django版本不匹配,请更新到最新版本,如果读者正使用较老的Python版本,请选择合适的Django版本
创建Django项目
第一次创建Django项目,我们需要做一些初始化设置,打开命令行,cd到你想要创建项目的路径,然后运行如下命令:
django-admin startproject mysite
这个命令会在当前目录创建一个名为mysite的文件夹,该文件夹包含了Django项目所需的配置项,包括数据库配置、Django配置、应用程序配置等。打开mysite文件夹,可以看到如下结构:
mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py
这些目录和文件的用处是:
- 最外层的 mysite/ 根目录只是你项目的容器, 根目录名称对Django没有影响,你可以将它重命名为任何你喜欢的名称
- manage.py: 一个让你用各种方式管理Django项目的命令行工具
- 里面一层的mysite/目录包含你的项目,它是一个纯Python包。它的名字就是当你引用它内部任何东西时需要用到的Python包名。(比如 mysite.urls)
- mysite/__init__.py:一个空文件,告诉Python这个目录应该被认为是一个Python包
- mysite/settings.py:Django项目的配置文件
- mysite/urls.py:Django项目的URL声明,就像你网站的“目录”
- mysite/asgi.py:作为你的项目的运行在ASGI兼容的Web服务器上的入口
- mysite/wsgi.py:作为你的项目的运行在WSGI兼容的Web服务器上的入口
运行mysite项目
cd命令切换到当前mysite的目录下,mysite目录为外层目录,这个容易搞错,然后运行如下命令:
python manage.py runserver
看见如下输出则表明启动服务成功
浏览器访问http://127.0.0.1:8000/,将会看到如下界面
runserver命令启动默认端口为8000,如想改变服务端口,可执行如下命令
python manage.py runserver 服务端口号
如想更改端口号为8080,则
python manage.py runserver 8080
到这里,我们的项目已经配置成功了,现在我们开始创建投票应用
创建投票应用
在Django中,每一个应用都是一个Python包,并且遵循着相同的约定。Django自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。
项目和应用有什么区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。
你的应用可以存放在任何Python path中定义的路径。在这个教程中,我们将在你的manage.py同级目录下创建投票应用。这样它就可以作为顶级模块导入,而不是mysite的子模块。
请确定你现在处于manage.py所在的目录下,然后运行这行命令来创建一个应用:
python manage.py startapp polls
这将会创建一个polls目录,目录结构如下:
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py
编写视图
打开polls/views.py文件,编写如下代码:
from django.http import HttpResponsedef index(request): return HttpResponse("投票主页视图")
这是一个最简单的视图,但是想要看见效果,还需要将URL映射过去,这个时候我们需要创建URLconf,请在polls目录下创建一个名为urls.py的文件,这个时候目录结构应为如下:
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py
在polls/urls.py输入如下代码:
from django.urls import pathfrom . import viewsurlpatterns = [ path('', views.index, name='index'),]
然后我们需要再根目录中的URLconf中配置映射,在mysite/urls.py中的urlpatterns列表中插入一个include(),如下:
from django.contrib import adminfrom django.urls import include, pathurlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls),]
记住需要import include方法,不然引用报错,函数include()方法允许引用其他URLconf
然后我们重新运行项目
python manage.py runserver
打开浏览器访问http://127.0.0.1:8000/polls/,应该可以看到页面上显示"投票主页视图"等描述