handler

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,然后返回
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容