- AOP面向切面编程
- 可切入函数
- 切入函数
- 如果没有返回值,就是获取请求相关的信息,没有对原来的逻辑进行更改
- 如果我们直接返回了Response的实现类(子类),会中断我们原来的逻辑,在切面处直接返回到浏览器
流程
1,在工程路径下建立一个middleware的文件,里面创建一个py文件,让系统承认
class learnMiddleware(MiddlewareMixin):
pass
MiddlewareMixin导入包
2,在setting里面配置,认证,在MIDDLEWARE下
‘middleware.AOP.learnMiddleware’
middleware根目录下创建的包名
AOP包里面的py文件
learnMiddleware py文件里面定义的class 的类名(让系统承认的)
3,在中间件里面添加需求
使用中间件模拟黑名单系统
(1) 首先定义中间件
(2) 在请求处理过程中进行数据校验
(3) 直接返回抢卷失败
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
# 中间件的名字不可变,切入的函数名和参数不可变
class learnMiddleware(MiddlewareMixin):
# 切入函数名不可变
def process_request(self, request):
print('请求', request.path)
# return HttpResponse("切开")
# 判断是那个APP
if request.path == '/myapp/docard/':
username = request.POST.get("username")
print(username)
# 数据存储在数据库中
if username == 'rock':
return HttpResponse("下手漫了,明天再来")
elif request.path == 'app/home/':
print('hello')