CBV 装饰器

  1. # django的类中使用装饰器需要引入 -- 第一种方法
  2. from django.utils.decorators import method_decorator
  3. # Create your views here.
  4. def zsq(func):
  5. # 定义一个装饰器
  6. def zsq1(*args,**kwargs):
  7. print('请求前')
  8. res = func(*args,**kwargs)
  9. print('请求后')
  10. return res
  11. return zsq1
  12. def base(request):
  13. return HttpResponse('<h1>test02 index!</h1>')
  14. class LoginView(View):
  15. @method_decorator(zsq) # 1. 调用装饰器(老版本支持)
  16. # @zsq # 2. 直接调用装饰器
  17. def get(self,request):
  18. print('get')
  19. return render(request,'login.html')
  20. @method_decorator(zsq)
  21. def post(self,request):
  22. print('post')
  23. username = request.POST.get('username')
  24. password = request.POST.get('password')
  25. return HttpResponse(username+password)

image.png

FBV 装饰器 (func based view)

  1. def zsq(func):
  2. # 定义一个装饰器
  3. def zsq1(*args,**kwargs):
  4. print('请求前')
  5. res = func(*args,**kwargs)
  6. print('请求后')
  7. return res
  8. return zsq1
  9. @zsq # 直接调装饰器
  10. def base(request):
  11. print('fbv -- get ')
  12. return HttpResponse('<h1>test02 index!</h1>')

image.png