该应用为一个基本的投票应用程序,由两部分组成:

  • 一个让用户查看和投票的网站
  • 添加,删除,修改的管理后台

假定你已经按照前面的文章安装了Django,可以通过此命令查看Django版本

python -m django --version

如果输出版本号,则证明已经成功安装Django,如果提示"No module named django"则表明未安装Django,请参考Python之Django系列-快速安装-2

该系列教程已Django版本为3.1.8,支持Python3.6及后续版本,如果Django版本不匹配,请更新到最新版本,如果读者正使用较老的Python版本,请选择合适的Django版本




python 项目 根目录 python的根目录_python


创建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

看见如下输出则表明启动服务成功


python 项目 根目录 python的根目录_python 项目 根目录_02


浏览器访问http://127.0.0.1:8000/,将会看到如下界面


python 项目 根目录 python的根目录_python 项目 根目录_03


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/,应该可以看到页面上显示"投票主页视图"等描述