标签:isp one elf 写法 语句 round log func utils
1、FBV方式:添加验证装饰器
def auth(func):
def deco(request, *args, **kwargs):
u = request.get_signed_cookie(‘username‘, salt=‘user‘, default=None)
if not u:
return render(request, ‘login.html‘)
return func(request, *args, **kwargs)
return deco
@auth
def index(request):
u = request.get_signed_cookie(‘username‘, salt=‘user‘, default=None)
return render(request, ‘index.html‘, {‘user‘: u})
@auth
def detail(request):
u = request.get_signed_cookie(‘username‘, salt=‘user‘, default=None)
return render(request, ‘detail.html‘, {‘user‘: u})
访问index/detail时,调用auth装饰器,如果验证成功,则执行index/detail(return func(request, *args, **kwargs)语句起的作用);否则跳转到login.html
2、CBV方式:通过django自带的装饰器method_decorator 的@method_decorator(cookie)来实现
from django.utils.decorators import method_decorator
from django import views
# @method_decorator(cookie,name=‘dispatch‘) # dispatch的便捷写法
class CBVtest(views.View):
@method_decorator(cookie) # 给dispatch方法添加装饰器,那么下面所有的get,post都会添加
def dispatch(self, request, *args, **kwargs):
return super(CBVtest, self).dispatch(request, *args, **kwargs)
# @method_decorator(cookie) # 单独添加
def get(self, request):
u = request.get_signed_cookie(‘username‘, salt=‘user‘, default=None)
return render(request, ‘houtai.html‘, {‘user‘: u})
def post(self, request):
return HttpResponse(‘post ok‘)
标签:isp one elf 写法 语句 round log func utils
原文地址:https://www.cnblogs.com/yoyo008/p/9409173.html