django request.user.is_authenticated всегда верно? - PullRequest
10 голосов
/ 16 февраля 2012

Может кто-нибудь сказать мне, почему в следующем коде я перенаправлен на 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')

Ответы [ 4 ]

39 голосов
/ 16 февраля 2012

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

Для Django 1.10 +

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

10 голосов
/ 16 февраля 2012

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

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

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

3 голосов
/ 18 января 2018

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

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

request.user.is_authenticated

верно!

0 голосов
/ 23 апреля 2018

У меня есть django 2.0, я пробовал это и работает

if request.user.is_authenticated:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...