# 装饰器
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