文件夹的创建
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',
]
标签:自定义,process,中间件,middleware,request,django,response
From: https://www.cnblogs.com/piggthird/p/17794001.html