CBV中django不推荐直接添加装饰器,需要先导入django的method_decorator
这里使用的是cookie和session中的例子
方式一:直接在方法头上加装饰器,谁需要就给谁加
from django.views import View
from django.utils.decorators import method_decorator
class MyView(View):
@method_decorator(login_auth)
def get(self, request):
return HttpResponse('get方法')
@method_decorator(login_auth)
def post(self, request):
return HttpResponse('post方法')
方式二:在类的上面加,可以添加多个,针对不同的方法加不同的装饰器
from django.views import View
from django.utils.decorators import method_decorator
@method_decorator(login_auth, name='get')
@method_decorator(login_auth, name='post')
class MyView(View):
def get(self, request):
return HttpResponse('get方法')
def post(self, request):
return HttpResponse('post方法')
方式三:重写父类的dispatch方法,在该方法上面添加,该方法添加装饰器会作用于类里的所有的方法
from django.views import View
from django.utils.decorators import method_decorator
class MyView(View):
@method_decorator(login_auth)
def dispatch(self, request, *args, **kwargs):
pass
def get(self, request):
return HttpResponse('get方法')
def post(self, request):
return HttpResponse('post方法')