is_authenticated возвращает True для AnonymousUser - PullRequest
4 голосов
/ 28 октября 2011

Я борюсь с is_authenticated, возвращая True, когда я не вошел в систему:

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

Чтобы уточнить, в представлении отладки Django правильно u определяется как AnonymousUser:

u   <django.contrib.auth.models.AnonymousUser object at 0x9e76f4cc>

Еще более странно, внутри шаблона is_anonymous отлично работает:

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

Почему это?

Ответы [ 2 ]

26 голосов
/ 28 октября 2011

Это метод , а не свойство.Вам нужно назвать его:

if u.is_authenticated():

Конечно, в шаблоне Django вызывает для вас методы автоматически.

6 голосов
/ 28 октября 2011

is_authenticated - это метод, поэтому вам нужно несколько скобок.В противном случае u.is_authenticated - это объект функции, который является значением True ish.

В языке шаблонов функции без аргументов оцениваются как функции, поэтому вам здесь хорошо.

...