给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

 

posted @ 2020-06-23 22:50  不忘初心❤  阅读(87)  评论(0编辑  收藏  举报