可以直接装饰在方法上
from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator from django.views.generic import TemplateView class ProtectedView(TemplateView): template_name = 'secret.html' @method_decorator(login_required) def dispatch(self, *args, **kwargs): return super().dispatch(*args, **kwargs)
装饰在类上
@method_decorator(login_required, name='dispatch') # 这里写要装饰的方法 class ProtectedView(TemplateView): template_name = 'secret.html'
通过列表
decorators = [never_cache, login_required] @method_decorator(decorators, name='dispatch') class ProtectedView(TemplateView): template_name = 'secret.html' ######### 两种方法是一样的 ############## @method_decorator(never_cache, name='dispatch') @method_decorator(login_required, name='dispatch') class ProtectedView(TemplateView): template_name = 'secret.html'
浙公网安备 33010602011771号