Django2.0-views(9)-類檢視新增裝飾器
阿新 • • 發佈:2018-12-21
給類檢視新增裝飾器
給類新增裝飾器,那麼可以通過以下兩種方式來實現:
裝飾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)