一.Django中间件
中间件类似于门卫,在数据进入和离开的时候都需要经过中间件处理。
二.中间件五个方法
from django.http import HttpResponseRedirect
from django.utils.deprecation import MiddlewareMixin
class AuthMiddleware(MiddlewareMixin):
# 1.请求进入中间件后,运行第一个方法
def process_request(self,request):
# 返回HttpResponse|None
pass
# 2.执行完process_request,就会执行process_view,func为视图函数,
# 所以func(request)就相当于执行了视图函数
def process_view(self,request,func,*args,**kwargs):
print('process_view')
response = func(request)
return response
# 3.如果返回的Response是渲染后的模板,对调用process_template_response方法
def process_template_response(self,request,response):
return response
# 4.如果返回的Response是非模板渲染的结果,会调用process_response
def process_response(self,request,response):
return response
# 5.当调用视图函数出现异常或返回Response异常,调用的函数
def process_exception(self,request,exception):
return HttpResponse('error')
三.在settings中注册中间件
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/260f8b8caddd66792de4f179f79fd2b6.png)
四.用中间件判断请求接口是否登录
def process_request(self, request):
print(f'hahahah{request}')
if request.path != '/login':
if request.session.get('username',None):
pass
else:
return HttpResponseRedirect("/login")