大致几个步骤:
- 用户通过浏览器请求一个页面
- 请求到达Request Middlewares
process_request
,中间件对request做一些预处理或者直接response请求 - URLConf通过urls.py文件和请求的URL找到相应的View
- View Middlewares
process_view
被访问,它同样可以对request做一些处理或者直接返回response - 调用View中的函数
- View中的方法可以选择性的通过Models访问底层的数据
- 所有的Model-to-DB的交互都是通过manager完成的
- 如果需要,Views可以使用一个特殊的Context
- Context被传给Template用来生成页面
a.Template使用Filters和Tags去渲染输出
b.输出被返回到View
c.HTTPResponse被发送到Response Middlewares
d.任何Response Middlewares都可以丰富response或者返回一个完全不同的response
e.Response返回到浏览器,呈现给用户
中间类中的顺序与方法
django 的中间件类至少含有以下四个方法中的一个:
process_request、 process_view、process_exception、process_response
WSGIHandler通过load_middleware将这个些方法分别添加到_request_middleware、_view_middleware、_response_middleware 和 _exception_middleware四个列表中。
并不是每个中间件都有这4个方法,如果不存在某个方法,那么在加载的过程中,这个类就被跳过。
网友评论