0
未登录的用户将由@login_required()
修饰符重定向到settings.py
中指定的LOGIN_URL
。到现在为止还挺好。但我不想那样。而不是重定向他们,我想显示一条错误消息给那些谁没有登录。@login_required()不重定向注销用户
我认为这可能工作,但我得到一个TypeError: ios_login_required() takes exactly 1 argument (0 given)
,我不明白。这是一个装饰器,它需要什么参数?
def ios_login_required(f):
def wrapper(request, *args, **kwargs):
if not request.user.is_authenticated:
return HttpResponse("You need to be logged in.")
else:
return f(request, *args, **kwargs)
return wrapper
其装饰的观点看起来是这样的:
@ios_login_required()
def amiloggedinornot(request):
return HttpResponse("Congrats, you are logged in!")
任何想法,我在哪里呢?
当我忽略括号中的返回值始终是''“恭喜,您登录!”'' – joschaf 2013-03-09 15:10:42
@Jo。那么'TypeError'是固定的。 'user.is_authenticated'是一个方法,它应该被调用:'如果不是request.user.is_authenticated():'。 – okm 2013-03-09 15:15:07
对,我忘了在''is_authenticated''后添加圆括号。在''@ ios_login_required''之后忽略括号,它应该像它应该那样工作,谢谢!但我很好奇,为什么当我调用这个装饰器时需要省略它们?我所有的其他装饰者都有他们。你知道吗? – joschaf 2013-03-09 15:21:13