自定义中间件 middleware

文件夹的创建#

1、在项目或者应用下创建一个任意名称的文件夹
2、在该文件夹下创建一个任意名称的py文件
3、在该py文件中写自定义的中间件(这个类必须继承MiddlewareMixin)
      然后在这个类里面就可以自定义五个方法了
	(这五个方法并不是全部都需要书写,用几个写几个)

中间件模板#

from django.utils.deprecation import MiddlewareMixin


class MyMiddleware(MiddlewareMixin):  # 必须继承 MiddlewareMixin 这是中间件的核心
    # process_request 和 process_response 这两个必须掌握
    def process_request(self, request):
        print('这是我第一个自定义中间件内的process_request方法')
        return HttpResponse('第一个自定义中间件内的process_request方法')

    def process_response(self, request, response):
        print('这是我第一个自定义中间件内的process_response方法')
        return response

了解方法#

了解即可
    process_view
    	# def process_view(self, request, view_name, *args, **kwargs)
        路由匹配成功之后执行视图函数之前,会自动执行中间件里面的该方法
        顺序是按照配置文件中注册的中间件从上往下的顺序依次执行

    process_template_response(特别奇葩,基本不用)
    	# def process_template_response(self, request, response)
        返回的HttpResponse对象必须有render属性的时候才会触发
        顺序是按照配置文件中注册了的中间件从下往上依次经过
        def index(request):
            print('我是视图函数index')
            obj = HttpResponse('index')
            def render():
                print('内部的render')
                return HttpResponse('我是视图层里面的render方法')
            obj.render = render
            return obj

    process_exception
    	# def process_exception(self, request, exception)
        当视图函数中出现异常的情况下触发
        顺序是按照配置文件中注册了的中间件从下往上依次经过

最重要的千万别忘记注册!!!

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    '你自己写的中间件的路径1',
    '你自己写的中间件的路径2',
    '你自己写的中间件的路径3',
]

作者:piggthird

出处:https://www.cnblogs.com/piggthird/p/17794001.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   PiggThird  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu