Django 文档
Documentation 最后更新: 2023-10-27

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:

terminal
$ 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',
]