Ben*_*Ben 12 python django decorator
我想为我的网站开始一个私人测试版.我有一个启动页面,用户可以输入代码然后访问网站的其余部分.目前,所有其他网站页面(除了启动页面)都包含一系列通过要求用户登录(通过@login_required装饰器)设置的重定向.
我希望登录的用户和输入Beta Tester代码的人都能够访问网站的其余部分.这意味着我不能只使用装饰器来获取所有视图.
我应该改变@login_required装饰器本身吗?我更想做以下事情(如果用户在启动页面输入正确的代码,我添加了一个会话变量).
def view_name(request):
user=request.user
if not user.id or not request.session.get('code_success'):
return HttpResponseRedirect('/splash/')
Run Code Online (Sandbox Code Playgroud)
这看起来合情合理吗?我不想为了我的所有观点重复它
布伦丹
Ste*_*yne 25
写你自己的装饰 - 这是相当直接的.事实上,如果你看一下Django的来源login_required,你应该可以为自己的目的摆弄一个副本.
def my_login_required(function):
def wrapper(request, *args, **kw):
user=request.user
if not (user.id and request.session.get('code_success')):
return HttpResponseRedirect('/splash/')
else:
return function(request, *args, **kw)
return wrapper
Run Code Online (Sandbox Code Playgroud)