is_authenticated вяртае ісціну AnonymousUser

Я змагаюся з is_authenticated вяртанне True калі я не ўвайшлі ў сістэму:

u = request.user
if u.is_authenticated:
    raise Exception('I am said to be authenticated, but I really am not.')

Каб удакладніць, Django выгляд адладкі правільна ідэнтыфікуе і як AnonymousUser :

u   

Яшчэ больш дзіўна, <�моцны> ўнутры шаблону is_anonymous выдатна працуе:

{% if not request.user.is_authenticated %}
    We are anonymous.
{% endif %}

Чаму гэта?

4

2 адказы

Гэта href = "https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.models.User.is_authenticated" метад rel = "noreferrer"> , не з'яўляецца уласцівасцю. Вы павінны назваць яго:

if u.is_authenticated():

Вядома, у шаблоне Django выклікае метады для Вас </а> аўтаматычна.

26
дададзена

is_authenticated is a method, so you need some parentheses there. Otherwise, u.is_authenticated is the function object, which is a Trueish value.

На мове шаблону функцыі без аргументаў вылічаюцца як функцыі, дык вось чаму ты там добра.

6
дададзена
О, дзякуй. Гэта мае сэнс. Адзін з гэтых тонкіх памылак вы не можаце натрэніраваць сваё вока на працягу пасля некалькіх гадоў працы з мовай, які дазваляе толькі Булевы ў стане.
дададзена аўтар Dan Abramov, крыніца