django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件, 如下:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
在项目同名文件夹里面创建新的叫middleware.py的文件,在里面重写中间类:
class NewMid():
def __init__(self):
print('这是hi我们的中间件的init')
def process_request(self, request):
'''处理请求之前'''
print('process_request')
def process_view(self,request,view_func,*args,**kwargs):
'''处理视图之前'''
print('process_view')
# def process_response(self, request, response):
# '''处理响应完成之后'''
# print('process_response')
def process_exception(self,request,exception):
'''异常处理'''
# raise Exception('我是异常') 写在视图里面,这里做的示范
print('process_exception')
然后在项目文件夹的setting里面MIDDLEWARE_CLASSES里,注册并关联这个这个中间类:
'watercar.middleware.NewMid', #与minddleware.NewMid 产生关联
这样就完成了中间件的重写,如果你想在’’‘处理请求之前’’’、’’‘处理视图之前’’’、’’‘处理响应完成之后’’’ 等,这些时间里做什么就直接可以做了。