一、 Django 中间件
django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件:
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、中间件中可以定义四个方法:
process_request(self,request) #每个进入view视图中请求都要经过这个函数 process_response(self, request, response) #每个从view视图中返回的response都会触发这个函数 process_view(self, request, callback, callback_args, callback_kwargs) #经过路由映射找到view中对应的方法后,就会触发这个函数,找不到就不会触发 process_template_response(self,request,response) # 如果Views中的函数返回的对象中,具有render方法,这个函数才会执行 process_exception(self, request, exception) #如果对应的视图中的函数出现异常,这个函数才会执行
2、自定义中间件
与mange.py在同一层级下新建目录Middle,在Middle新建m1.py(文件名称随意):
1、在m1.py中定义三个中间件
class Foo: # render 方法用来触发process_template_response函数 def render(self): return HttpResponse("template_response") def test(request): print("穷") return Foo()