码迷,mamicode.com
首页 > 其他好文 > 详细

django源码解析一(请求处理流程)

时间:2017-09-13 13:14:30      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:时间   bsp   执行   change   函数   self   inter   request请求   llb   

技术分享

 


技术分享
1.我们都知道WSGI是一个规范,规范了server和application之间通信的一些约束,server端在监听到请求之后,会把请求转给application去处理,他们之间关联起来的桥梁是一个env变量和一个start_response的回调函数,env用来初始化application的request请求,start_response方法用来将response返回给server。
 
2.每一个application都要实现一个__call__方法接收两个参数(environ, start_response),__call__方法执行server传过来的每一个请求,获取response的方法是 self.get_response(request), request是一个WSGIRequest的实例,这个WSGIRequest的实例在生成的时间传入一个参数 environ,根据environ生成一个request的实例,这个实例会根据environ的信息初始化request的基本信息。如下图:
技术分享

 

技术分享
3.get_response方法具体做了哪些事情?
先去循环执行没一个middleware的process_request方法,如果有返回值,则直接跳出循环,如果没有返回值,则依次执行url,view, callback, (这些是干啥的我暂时还没看),最后如果response有render方法,则执行template_response_middlerware的渲染方法并且执行response的render方法,详情可见下图:
技术分享

 

技术分享
然后执行回调函数start_response(status, response_headers),最后返回response:
 
技术分享

django源码解析一(请求处理流程)

标签:时间   bsp   执行   change   函数   self   inter   request请求   llb   

原文地址:http://www.cnblogs.com/lip0121/p/7514261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!