全书目录

第十四篇:Django 完全指南 —— 中央行政城区宇宙

第十三章:请求生命周期 —— 一位市民走完整个中央行政城区的路线图

1 分钟 233 字 第 287 / 962 个阅读单元

前面一章一章拆开讲,现在把整条路径重新合起来。

这张图如果吃透,Django 就基本真的入门了:

text
浏览器发起请求
    │
    ▼
Web 服务器 / ASGI / WSGI 入口
    │
    ▼
Django 加载 settings
    │
    ▼
Middleware(请求阶段)
    │
    ├── SessionMiddleware
    ├── AuthenticationMiddleware
    ├── CSRF 相关中间件
    └── 其他自定义中间件
    ▼
URL Resolver 匹配路由
    │
    ▼
进入 View
    │
    ├── 读取 request.GET / request.POST / request.FILES
    ├── 读取 request.user
    ├── 调用 Form 做校验
    ├── 调用 Model / ORM 查库
    ├── 选择 render / redirect / JsonResponse
    └── 必要时抛出 404 / 403 / 500
    ▼
生成 HttpResponse
    │
    ▼
Middleware(响应阶段)
    │
    ▼
返回浏览器

再看一张概念关系图:

text
              +----------------------+
              |      Middleware      |
              +----------------------+
                    │           │
请求  --->  URLconf ----> View ----> Response
                          │
                  ┌───────┼────────┐
                  │       │        │
                  ▼       ▼        ▼
                Form    Model   Template
                          │
                          ▼
                         ORM
                          │
                          ▼
                       Database

几个容易模糊但必须清楚的事实:

  • Template 不是每次都参与,请求也可以直接返回 JSON、文件或重定向
  • Middleware 会包住整条进出流程
  • request.user 之所以可用,是认证相关中间件提前工作了
  • runserver 只是开发服务器,不是生产部署方案本身

把这条生命周期理解成“市民进城办事的一整天”,你就不容易在代码里迷路。