首页 技术 正文
技术 2022年11月23日
0 收藏 836 点赞 2,988 浏览 994 个字

从这里拉开django框架的帷幕。。撕开,哈哈

主要涉及的类:django.core.handlers.base.BaseHandler,django.core.handlers.wsgi.WSGIHandler,前者为后者的父类。

django.http.request.HttpRequest

后者的实例实现了WSGI请求的处理,因为WSGIHandler 实现了__call__方法,所以实例成为了可调用对象。

流程:接收到一个wsgi请求–》生成一个WSGIHandler实例,传入参数environ,start_response.–》建立request对象(environ作为参数)–》调用base.BaseHandler的get_response方法(使用这个request作为参数)

这个get_response的主要作用就是各种middleware的调用,其次就是解析url到view,依据url.py中的patterns。

urlresolve是什么呢,就是从urlconf中找出第一个匹配到的view。

然后就开始middleware和view的调用了。

get_response首先将request用_requet_middleware处理一遍。

如果request_middleware返回response了,就直接结束并返回response

request_middleware循环完了当然该view_middleware了。view_middleware在view还没有被执行的时候进行处理。参数是request,view,var参数keyword参数。

接着就该真正的执行这个view了,如果在views中出错了,就进行exceptiion_middleware处理。否则返回一个response。

如果view的返回值是一个Template,那么会导致template_response_middleware的调用。参数是request和response

最后被调用的是response_middleware,参数仍然是request,response,不过这个response是Response对象了。。

注意在上面任何一步返回一个response都会导致views中的response失效。

没什么难的,源代码很清晰。。

接下来分析一下这个过程中涉及到的urlresolve过程。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,751
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,340
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,167
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:5,982
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,627
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,644