Django 请求生命周期详解:从 WSGI 到视图处理

Mason
Mason
发布时间:2026-10-14| 5人浏览过
原创

本文深入解析 Django 框架中 HTTP 请求的完整生命周期。从 WSGI 接口接收请求开始,依次经过中间件校验、路由匹配、视图函数处理及响应返回。重点对比了 wsgiref 与 werkzeug 的实现差异,并阐述了 FBV 与 CBV 的执行逻辑及 REST Framework 的介入机制,帮助开发者理解底层工作原理。

首先通过一张示意图来直观展示整体流程。

Django 请求生命周期流程

1、请求生命周期

- WSGI:作为 Socket 服务端,负责接收用户请求并进行初步封装,随后将请求传递给 Web 框架(如 Flask、Django)。

- 中间件:用于对请求进行校验或在请求对象中附加相关数据,例如 CSRF 保护、request.session 等。

- 路由匹配:根据 URL 规则确定对应的视图处理逻辑。

- 视图函数:在此阶段执行具体的业务逻辑,可能涉及 ORM 数据库操作或 Templates 模板渲染。

- 中间件:对生成的响应数据进行后续处理。

- WSGI:将最终响应内容发送回浏览器。

WSGI 协议与实现

2、什么是 WSGI

WSGI:Web Server Gateway Interface(Web 服务网关接口)。

实现该协议的常见模块包括:

  • - wsgiref(测试版本,性能较差)
  • - werkzeug
  • - uwsig

wsgiref 示例代码:


from wsgiref.simple_server import make_server
 
def run_server(environ, start_response):
  start_response('200 OK', [('Content-Type', 'text/html')])
  return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ] #字节
 
 
if __name__ == '__main__':
  httpd = make_server('127.0.0.1', 8000, run_server)
  httpd.serve_forever()

werkzeug 示例代码:


from werkzeug.wrappers import Response
from werkzeug.serving import run_simple
 
def run_server(environ, start_response):
  response = Response('hello')
  return response(environ, start_response)   #对象
 
if __name__ == '__main__':
  run_simple('127.0.0.1', 8000, run_server)

视图模式:FBV 与 CBV

3、视图 FBV

URL 映射到函数。

CBV

URL 映射到视图类。

FBV(Function Based View)与 CBV(Class Based View)本质相同,区别仅在于 FBV 基于函数,而 CBV 基于类。FBV 相比 CBV 会多执行若干步骤。

REST Framework 介入机制

4、REST Framework

REST Framework 从 dispatch 方法介入,在视图执行完毕后,若存在 REST Framework 组件,则继续执行其逻辑。

5、RESTful 规范

查看 RESTful 规范详情。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。