1.什么是中间件:
官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能
2.自定义中间件
在app中建一个文件mymiddleware
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import render, HttpResponse
class MyMiddleware(MiddlewareMixin):
def process_request(self, request):
print('mymiddle_1-------------process_request')
def process_response(self, request, response):
print('mymiddle_1-------------process_response')
return response
3.process_request
process_request有一个参数,就是request,这个request和视图函数中的request是一样的。
它的返回值可以是None也可以是HttpResponse对象。返回值是None的话,按正常流程继续走,交给下一个中间件处理,如果是HttpResponse对象,Django将不执行视图函数,而将相应对象返回给浏览器。
4.process_response
它有两个参数,一个是request,一个是response,request就是上述例子中一样的对象,response是视图函数返回的HttpResponse对象。该方法的返回值也必须是HttpResponse对象。