面向切面编码 AOP
- process_request 在处理url路由之前进行处理逻辑
- process_response 在响应返回游览器之前使用
- process_view 在调用视图之前执行
- process_templates_response 在视图刚好执行完的时候调用
实例:实现cookie的检验
1.创建文件夹 (名字为:utils)
2.在utils文件夹下创建(init.py文件,UserAuthMiddleware.py文件)
如图所示:
在UserAuthMiddleware.py文件下代码如下:
from django.http import HttpResponseRedirect
from django.utils.deprecation import MiddlewareMixin
from uauth.models import Users
class AuthMiddleware(MiddlewareMixin):
def process_request(self,request):
if request.path == '/uauth/login/'
return None
ticket = request.COOKIE.get('ticket')
if not ticket:
return HttpResponseRedirect('/uauth/login/')
users = Users.objects.filter(u_ticket=ticket)
if not users:
return HttpResponseRedirect('/uauth/login/')
return.user = users[0]
这样,除了访问url为 “/uauth/login/”之外的页面,都需要验证游览器中的cookie和数据库中的cookie是否匹配