为类视图添加装饰器,可以使用三种方法:
from django.utils.decorators import method_decorator # 在类试图中对函数进行添加装饰器使用
from django.views import View
# 为函数视图准备的装饰器
def my_decorator(function):
def wrapper(request,*args,**kwargs):
print(request.path)
print("装时期先执行")
return function(request)
return wrapper
方式一:
class DemoView(View):
# @method_decorator(my_decorator)
def get(self,request):
return HttpResponse("get")
def post(self,request):
return HttpResponse("Post")
在url中添加;
根据装饰器的原理;很好理解
# url(r"demoview/",views.my_decorator(views.DemoView.as_view()))
方式二:
在类视图中添加;根据类视图中所继承的view类的调用原理来重写dispatch可实现对全部请求添加装饰器
class DemoView(View):
# 重写dispatch
# @method_decorator(my_decorator)
def dispatch(self, request, *args, **kwargs):
return super().dispatch(request,*args,**kwargs)
def get(self,request):
r