编写你的第一个 Django 应用,第 1 部分
让我们通过示例来学习。
本教程将引导你创建一个基础的投票应用程序,包含两个主要部分:
一个供用户查看和投票的公共站点。
一个用于添加、修改和删除投票的管理站点。
在开始之前,请确保你已经安装了 Django。可以通过在命令行中输入以下命令来验证安装和版本:
$ python -m django --version
如果显示版本号,说明 Django 已安装;如果提示“No module named django”,则需要先安装 Django。
本教程基于 Django 5.2,支持 Python 3.10 及以上版本。如果 Django 版本不匹配,你可以通过页面右下角的版本切换器选择适合的教程版本,或升级到最新版本。如需了解 Python 版本兼容性,请参考 我应该使用哪个版本的 Python 来配合 Django?。
获取帮助:
如果在学习过程中遇到问题,可以查看 FAQ 中的 获取帮助 部分。
创建项目
首次使用 Django 时,需要进行一些初始化设置。你需要创建一个 Django 项目,即包含数据库配置、Django 设置和应用程序配置的集合。
在命令行中,进入你希望存储代码的目录,创建一个名为 djangotutorial
的目录(名称可自定义):
$ mkdir djangotutorial
然后运行以下命令,初始化一个新的 Django 项目:
$ django-admin startproject mysite djangotutorial
这将在 djangotutorial
目录内生成一个名为 mysite
的项目。如果命令执行失败,请参考 运行 django-admin 时遇到的问题。
注意:
避免使用 Python 或 Django 的保留关键字命名项目,例如 django
或 test
,以免产生冲突。
startproject
命令生成的文件结构如下:
djangotutorial/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
各文件和目录的作用:
manage.py
:用于管理 Django 项目的命令行工具。详情请参考 django-admin 和 manage.py。mysite/
:项目的 Python 包目录,其名称用于导入相关内容(例如mysite.urls
)。mysite/__init__.py
:空文件,标识该目录为 Python 包。mysite/settings.py
:Django 项目的配置文件。更多信息请查看 Django 配置。mysite/urls.py
:项目的 URL 声明,相当于网站的目录。详情请阅读 URL 调度器。mysite/asgi.py
:ASGI 兼容服务器的入口点。了解更多请参考 如何使用 ASGI 部署。mysite/wsgi.py
:WSGI 兼容服务器的入口点。详情请查看 如何使用 WSGI 部署。
用于开发的简易服务器
验证 Django 项目是否正常工作。进入 djangotutorial
目录,运行以下命令:
$ python manage.py runserver
如果一切正常,你将看到类似以下输出:
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
八月 23, 2025 - 15:50:53
Django version 5.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/5.2/howto/deployment/
注意:
暂时忽略关于未应用数据库迁移的警告,后续我们会处理数据库。
现在,通过浏览器访问 http://127.0.0.1:8000/,你将看到 Django 的默认欢迎页面,表示项目已成功运行。
Django 开发服务器是一个轻量级的纯 Python Web 服务器,专为开发设计,无需配置生产服务器(如 Apache)。切勿将其用于生产环境。
自动重新加载:
开发服务器会在代码修改时自动重新加载,无需手动重启。但添加新文件等操作可能需要重启服务器。
创建投票应用
现在项目环境已配置完成,可以开始创建应用。
在 Django 中,每个应用都是一个独立的 Python 包。Django 提供了生成应用基础结构的工具。
项目与应用的区别:
应用是完成特定功能的 Web 程序,例如博客系统或投票程序。
项目是网站配置和应用的集合,可以包含多个应用,应用也可被多个项目使用。
应用可以位于 Python 路径的任何位置。本教程中,我们将在 djangotutorial
目录内创建投票应用。
确保当前目录为 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
,输入以下代码:
polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这是 Django 中最简单的视图。为了在浏览器中访问,需要将其映射到 URL,因此需要创建 URL 配置(URLconf)。每个 Django 应用都有一个名为 urls.py
的 URL 配置文件。
在 polls
目录下创建 polls/urls.py
,内容如下:
polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
此时应用目录结构应为:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
接下来,在项目的根 URLconf(mysite/urls.py
)中包含 polls.urls
。修改 mysite/urls.py
,添加 include
并更新 urlpatterns
:
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),
]
path()
函数至少需要两个参数:route
和 view
。include()
函数用于引用其他 URLconfs,截断匹配的 URL 部分,并将剩余部分发送到包含的 URLconf 处理。
include()
的设计使应用可以灵活部署在任何路径下,如 "/polls/"、"/fun_polls/" 等。
何时使用 include()
:
除 admin.site.urls
外,引用其他 URL 模式时应始终使用 include()
。
现在,index
视图已添加到 URLconf 中。通过以下命令启动服务器进行验证:
$ python manage.py runserver
访问 http://localhost:8000/polls/,你应该看到 "Hello, world. You're at the polls index."。
如果页面未显示:
确保访问的是 http://localhost:8000/polls/,而不是 http://localhost:8000/。
完成以上步骤后,你可以继续学习【