Django request.user.is_authenticated всегда правдиво?

Может ли кто-нибудь сказать мне, почему в следующем коде я перенаправляюсь на yahoo.com вместо google.com?

URLs

urlpatterns = patterns('', (r'^$', initialRequest,))

Вид

def initialRequest(request):

    if request.user.is_authenticated:
        return HttpResponseRedirect('http://yahoo.com')
    else:
        return HttpResponseRedirect('http://google.com')

Ответ 1

Разве это не должно быть request.user.is_authenticated(), т.е. с помощью скобок, поскольку это функция?

Для Django 1.10 +

is_authenticated теперь является атрибутом (хотя на данный момент он поддерживается обратно совместимым).

Ответ 2

Как упоминал Ричард, is_authenticated - это функция, поэтому, на ваш взгляд, ее следует называть как: request.user.is_authenticated().

Из-за языка шаблонов django может возникнуть путаница, потому что вызов этого в шаблоне делает его отображаемым как свойство, а не метод.

{{ user.is_authenticated}} https://docs.djangoproject.com/en/dev/topics/auth/

Ответ 3

его снова изменили с запроса Pull # 216.

теперь ваша проблема исправлена, если вы используете Django 2.0+, посмотрите на это проблема GitHub - те же проблемы, которые у вас были. поэтому в Django 2.0 +

request.user.is_authenticated

истинно!