Django 文档
你需要了解关于 Django 的一切。Django 是一个高级 Python Web 框架,它鼓励快速开发和简洁、实用的设计。
概览
Django 是一个开放源代码的 Web 应用框架,由 Python 写成。采用了 MTV 的框架模式,即模型(Model)、模板(Template)和视图(Views)。
Django 提供了什么?
- 一个对象关系映射器 (ORM),用于通过 Python 代码定义数据模型。
- 一个自动生成的后台管理界面。
- 一个优雅的URL 分发系统。
- 一个设计精妙的模板系统。
- 用于开发环境的轻量级 Web 服务器。
安装指南
在安装 Django 之前,请确保你已经安装了 Python。Django 4.2 支持 Python 3.8、3.9、3.10、3.11 和 3.12。
快速安装
使用 pip 安装 Django:
$ python -m pip install Django
验证安装
$ python -m django --version
第1部分:请求与响应
我们将学习如何创建一个基本的 Django 项目。这部分涵盖了创建项目、开发服务器以及创建第一个视图。
创建项目
打开命令行,cd 到你想要存放代码的目录,然后运行以下命令:
$ django-admin startproject mysite
这行代码将会在当前目录下创建一个 mysite 目录。
第2部分:模型与管理后台
这部分我们将定义你的第一个模型——本质上是你的数据库布局,附带元数据。
数据库配置
打开 mysite/settings.py。默认情况下,Django 使用 SQLite。
创建模型
在 polls/models.py 文件中添加以下代码:
from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField("date published") class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
第3部分:视图与模板
视图负责接受 Web 请求并返回 Web 响应。响应可以是 HTML 内容、重定向、404 错误、XML 文档或图片等。
编写更多视图
让我们在 polls/views.py 里添加更多视图:
from django.http import HttpResponse def detail(request, question_id): return HttpResponse("You're looking at question %s." % question_id) def results(request, question_id): response = "You're looking at the results of question %s." return HttpResponse(response % question_id) def vote(request, question_id): return HttpResponse("You're voting on question %s." % question_id)
第4部分:表单与通用视图
我们将继续完善我们的投票应用,重点放在处理表单和减少代码冗余上。
编写一个简单的表单
更新 polls/detail.html 模板:
<form action="{% url 'polls:vote' question.id %}" method="post"> {% csrf_token %} <fieldset> <legend><h1>{{ question.question_text }}</h1></legend> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} {% for choice in question.choice_set.all %} <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}"> <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br> {% endfor %} </fieldset> <input type="submit" value="Vote"> </form>
设置 (Settings)
Django 设置文件是一个 Python 模块,包含 Django 配置。这里有一些重要的设置项。
# settings.py # 调试模式 DEBUG = True # 允许的主机 ALLOWED_HOSTS = ['localhost', '127.0.0.1'] # 已安装的应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'polls', # 你的应用 ]
URL 调度器
简洁优雅的 URL 方案是高质量 Web 应用的一个细节。Django 允许你任意设计 URL。
示例 URLconf
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('<int:question_id>/', views.detail, name='detail'), path('<int:question_id>/results/', views.results, name='results'), path('<int:question_id>/vote/', views.vote, name='vote'), ]
中间件
中间件是一个钩子框架,用于处理 Django 的请求/响应处理过程。它是一个轻量级、低级的“插件”系统,用于全局改变 Django 的输入或输出。
激活中间件
要激活中间件组件,请将其添加到 Django 设置中的 MIDDLEWARE 列表中。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
]