中间件(Middleware) 用法: django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。 setting.py 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', 'myweb.middleWare.Middleware_1', # 第一个自定义 middleware,myweb是中间件所在的路径 ]
MIDDLEWARE 中都是中间件解析:中间件5个基本方法:process_request(self,request)#接受request之后确定所执行的view之前
process_view(self, request, callback, callback_args, callback_kwargs)# 确定了所要执行的view之后 view真正执行之前
process_template_response(self,request,response)#是在视图函数执行完成后立即执行,但是它有一个前提条件,那就是视图函数返回的对象有一个render()方法(或者表明该对象是一个TemplateResponse对象或等价方法)。
process_exception(self, request, exception)#view抛出异常
process_response(self, request, response)# view 执行之后
注意:前两个方法是请求的时候执行(属于request),后三个方法是后台返回时执行(属于response)
example:
from django.utils.deprecation import MiddlewareMixin class Middleware_1(MiddlewareMixin): def process_request(self, request): print(request.get_full_path,'111111111') print(type(request.get_raw_uri),'111111111') print(dir(request),'111111111') print("自定义 process_request 1") return None def process_view(self, request, callback, callback_args, callback_kwargs): print("自定义 process_view 1") return None def process_response(self, request, response): print("自定义 process_response 1") return response def process_exception(self, request, exception): print(request,exception,'==========') print("自定义 process_exception 1")启动Django,发送一个请求、