Python 中间件

EN
EN
2023-04-05 / 0 评论 / 35 阅读 / 正在检测是否收录...

定义中间件

根目录 下,创建 midd文件夹,在 midd文件夹 下创建 md.py 文件,写入 类为 MyMd 的中间件

'''
自定义一个中间件
继承 MiddlewareMixin
'''

from django.utils.deprecation import MiddlewareMixin
class MyMd(MiddlewareMixin):
    def process_request(self, request):
        '''
        前置中间件
        :param request:  请求数据
        :return:
            无发返回值或返回None,放行
            不放行 返回 redirect、render、http... 
        '''
        # 【例如】如果是登录页面放行,不是登录页面判断cookie
        if request.path_info == '/login/':
            return
        else:
            pass
          
        print("前置中间件")
        pass

    def process_response(self, request, response):
        '''
        后置中间件
        :param request:  请求数据
        :param response: 响应返回数据
        :return:
        '''
        print("后置中间件")
        return response

注册中间件

在配置文件中的 settings.py 中 注册中间件

# 中间件 按顺序执行
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # csrf认证
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    # 自定中间件
    'midd.md.MyMd'
]

执行结果

先执行 前置中间件 ,再执行 业务代码 ,最后执行 后置中间件

前置中间件
index
后置中间件

lt2noxjo.png

0

评论 (0)

取消