博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django中间件
阅读量:6094 次
发布时间:2019-06-20

本文共 1774 字,大约阅读时间需要 5 分钟。

中间件就是一个类,使用需要注册这个类。在这个类中有process_requestprocess_response,返回值只有reponse有,如果第一个有的话,就不会走view函数了。

django中间件
djanjo 中间件版本差异报错处理:

1.9.x版本以下djanjo中间件定义规则

class CommonMiddleware(object):

def process_request(self, request):
return None

def process_response(self, request, response):    return response

最新的1.10.x版本djanjo中间件定义规则----------不是执行的类下的方法,而是执行MiddlewareMixin对象的call方法(方法中调用,process_request等方法)

from djanjo.utils.deprecation import MiddlewareMixin

class CommonMiddleware(MiddlewareMixin):
def process_request(self, request):
return None

def process_response(self, request, response):    return response

下面的方法就可以让 中间件 兼容 Django新版本和旧版本------------上面俩种的合并

call 方法会先调用 self.process_request(request),接着执行 self.get_response(request) 然后调用 self.process_response(request, response)

django中间件

process_view 中的view会把所有的response都会返回,而process_request是只会从第一个上面返回。

下面的代码

from django.utils.deprecation import MiddlewareMixinfrom django.shortcuts import HttpResponseclass M1(MiddlewareMixin):    def process_request(self,request):        print('m1.process_request')    def process_view(self, request, callback, callback_args, callback_kwargs):        print('m1.process_view')        # response = callback(request,*callback_args,**callback_kwargs)        # return response    def process_response(self,request,response):        print('m1.process_response')        return responseclass M2(MiddlewareMixin):    def process_request(self,request):        print('m2.process_request')    def process_view(self, request, callback, callback_args, callback_kwargs):        print('m2.process_view')    def process_response(self,request,response):        print('m2.process_response')        return response

request_exception执行流程

django中间件
应用:
1、对一部分数据或者 全部数据进行批量处理的
2、缓存的使用,如果缓存用,就使用没有就执行后面的查找

转载于:https://blog.51cto.com/sgk2011/2082843

你可能感兴趣的文章
Maven 私有库和本地库的安装与配置 Sonatype Nexus+Maven
查看>>
开始写博客楼
查看>>
MySQL分页优化
查看>>
Linux 学习--Linux mint 安装
查看>>
Spring学习笔记(六)
查看>>
返回键失效,返回上一级
查看>>
file_get_content 和curl以及fopen 谁的效率最高
查看>>
JAVA虚拟机垃圾回收机制和JAVA排错三剑客
查看>>
MySQL的跨年周统计问题
查看>>
html多媒体简介:
查看>>
微信解密WxCryptUtil 失败 at java.util.Arrays.copyOfRange(Unknown Source)
查看>>
Kickstart自动化安装系统
查看>>
Linux iotop使用
查看>>
我的友情链接
查看>>
mysql 启动报错 “mysql-bin.index not found (Errcode: 13)“
查看>>
Linux Source命令及脚本的执行方式解析
查看>>
第一博
查看>>
jsp中生成的验证码和存在session里面的验证码不一致的处理
查看>>
Cookie 原理及作用
查看>>
通俗易懂地讲解TCP建立连接的三次握手和释放连接的四次挥手
查看>>