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