Django 请求生命周期详解:从 WSGI 到视图处理
本文深入解析 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 规范详情。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













