django返回的application为handler对象
base
middleware
对于新式的middleware的处理流程:
最内层的_get_response,然后反向遍历MIDDLEWARE,接受前一个middleware为参数这样链接起来,另外增加
_view_middleware
_template_response_middleware = None
_exception_middleware = None
get_response
调用middleware链
链中调用:
先调用process_request方法,无响应则调用链中下一个的process_request方法直到最后一个
最后一个是被convert_exception_to_response封装的_get_response方法,调用get_response
先路由解析,调用_view_middleware中的中间件
没有响应则调用用户函数
判断用户函数的响应,如果有render方法,调用_template_response_middleware中的中间件,之后调用render
wsgi
比base中多了call用于web服务器调用
设置根路由
初始化request
调用base中的get_response
拿到response后设置头部、cookie,然后返回