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

Django2.X中的中间件

时间:2020-05-04 15:09:51      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:dep   ddl   自己的   pen   span   hide   pass   div   RoCE   

相比Django1.X中间件,Django2.X中的中间件使用方法做了修改。

1.定义中间件需要继承MiddlewareMixin类:

from django.utils.deprecation import MiddlewareMixin

class 中间件类名(MiddlewareMixin):
    pass

2.中间件类中的__init__方法看 MiddlewareMixin 的源码是需要传入两个参数

技术图片
class MiddlewareMixin:
    def __init__(self, get_response=None):
        self.get_response = get_response
        super().__init__()

    def __call__(self, request):
        response = None
        if hasattr(self, process_request):
            response = self.process_request(request)
        response = response or self.get_response(request)
        if hasattr(self, process_response):
            response = self.process_response(request, response)
        return response
MiddlewareMixin
    def __init__(self,request=None):
        super().__init__()
        print(---init---)

  凭自己的理解重写__init__方法后报服务器500错误,Django的错误是这样的

技术图片

 

   没有时间做进一步的深入了解,将__init__方法注释后没有报错了。有朋友或大牛知道处理方法,可以评论告知一下,谢谢!

3.视图处理异常可以直接在中间件类中定义一个方法来实现

技术图片

 

   如果处理异常需要多个处理方式,可以和Django1.X中一样,定义多个中间件类,在项目settings中注册。

技术图片

 

 技术图片

 

   效果和Django1.X中一样:

技术图片

Django2.X中的中间件

标签:dep   ddl   自己的   pen   span   hide   pass   div   RoCE   

原文地址:https://www.cnblogs.com/zzmx0/p/12826511.html

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