给CBV加装饰器

 
# 装饰器

def login_auth(func):
    def inner(request,*args,**kwargs):
        if request.session.get('is_login'):
            return func(request,*args,**kwargs)
        else:
            return redirect('/login/')
        return inner

      

                            



在django中给CBV加装饰器需要导入模块
from django.utils.decoreation import method_decorator
# 先要有个类作位网站主页,必须登录才能访问
# CBV
class Home(View):
  def get(self,request):
    pass
  def post(self,request):
    pass
 两种加装饰器的方法


# 类名上加装饰器
@method_decorator(login_auth,name='get') # 加在类上面的话,必须通过name指定给谁加
class Home(View):
  def get(self,request):
    pass
  def post(self,request):
    pass


#方法名上加,不要用原生装饰器,用的话只能改参数,那样不通用 class Home(View):   @method_decorator(login_auth)   def get(self,request):     pass   def post(self,request):     pass
原文地址:https://www.cnblogs.com/tuzaizi/p/13185030.html