给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