自定义中间件 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 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用