1. 程式人生 > >Django2.0-views(9)-類檢視新增裝飾器

Django2.0-views(9)-類檢視新增裝飾器

給類檢視新增裝飾器

給類新增裝飾器,那麼可以通過以下兩種方式來實現:

裝飾dispatch方法

from django.utils.decorators import method_decorator  # 給類的方法使用的裝飾器

def login_required(func):  # 裝飾器
    def wrapper(request,*args,**kwargs):
        if request.GET.get("username"):
            return func(request,*args,**kwargs)
        else:
            return
redirect(reverse('index')) return wrapper class IndexView(View): def get(self,request,*args,**kwargs): return HttpResponse("index") @method_decorator(login_required) # 使用裝飾器 def dispatch(self, request, *args, **kwargs): super(IndexView, self).dispatch(request,*args,**kwargs)

直接裝飾在整個類上

只用一個裝飾器 @method_decorator(裝飾器函式名,name='需要裝飾的函式名')

使用多個裝飾器 @method_decorator([裝飾器名1,裝飾器名2,...],name='需要裝飾的函式名')

from django.utils.decorators import method_decorator

def login_required(func):  # 裝飾器
    def wrapper(request,*args,**kwargs):
        if request.GET.get("username"):
            return
func(request,*args,**kwargs) else: return redirect(reverse('login')) return wrapper @method_decorator(login_required,name='dispatch') # 選定需要裝飾的函式名 class IndexView(View): def get(self,request,*args,**kwargs): return HttpResponse("index") #def dispatch(self, request, *args, **kwargs): # super(IndexView, self).dispatch(request,*args,**kwargs)