Django2.X中的中间件
Posted zzmx0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django2.X中的中间件相关的知识,希望对你有一定的参考价值。
相比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
def __init__(self,request=None): super().__init__() print(‘---init---‘)
凭自己的理解重写__init__方法后报服务器500错误,Django的错误是这样的
没有时间做进一步的深入了解,将__init__方法注释后没有报错了。有朋友或大牛知道处理方法,可以评论告知一下,谢谢!
3.视图处理异常可以直接在中间件类中定义一个方法来实现
如果处理异常需要多个处理方式,可以和Django1.X中一样,定义多个中间件类,在项目settings中注册。
效果和Django1.X中一样:
以上是关于Django2.X中的中间件的主要内容,如果未能解决你的问题,请参考以下文章
python Django2.X,报错 ‘learning_logs ’is not a registered namespace,如何解决?