zoukankan      html  css  js  c++  java
  • 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
    MiddlewareMixin
        def __init__(self,request=None):
            super().__init__()
            print('---init---')

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

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

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

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

     

       效果和Django1.X中一样:

  • 相关阅读:
    oracle数据库常用指令
    MySql常用命令
    js动态添加和删除行
    Mybatis模糊查询
    laravel 成功跳转页面
    laravel 验证码
    git获取公钥和私钥以及常用的命令
    laravel css和js的引入
    git add -A 、git add -u 、 git add . 三种区别
    windows下github 出现Permission denied (publickey).解决方法
  • 原文地址:https://www.cnblogs.com/zzmx0/p/12826511.html
Copyright © 2011-2022 走看看