Я просматриваю этот сайт, но просто не могу понять, как это сделать, так как он не работает. Мне нужно проверить, вошел ли текущий пользователь сайта в систему (аутентифицирован) и пытаюсь:
request.user.is_authenticated
несмотря на то, что пользователь вошел в систему, он возвращает только:
>
Я могу сделать другие запросы (из первого раздела в URL выше), такие как:
request.user.is_active
который возвращает успешный ответ.
Ответы:
Обновление для Django 1.10+ :
is_authenticated
теперь это атрибут в Django 1.10. Метод все еще существует для обратной совместимости, но будет удален в Django 2.0.Для Django 1.9 и старше :
is_authenticated
это функция. Вы должны назвать это какКак отметил Питер Роуэлл, вас может сбить с толку то, что в стандартном языке шаблонов Django вы не привязываете скобки для вызова функций. Таким образом, вы могли видеть что-то подобное в коде шаблона:
Однако в коде Python это действительно метод в
User
классе.источник
Джанго 1.10+
Используйте атрибут, а не метод:
Использование метода с тем же именем устарело в Django 2.0 и больше не упоминается в документации Django.
Обратите внимание, что для Django 1.10 и 1.11 значением свойства является a,
CallableBool
а не логическое значение, что может вызвать некоторые странные ошибки. Например, у меня было представление, которое вернуло JSONчто после обновления в собственность
request.user.is_authenticated
выкидывалось исключениеTypeError: Object of type 'CallableBool' is not JSON serializable
. Решением было использование JsonResponse, который мог правильно обрабатывать объект CallableBool при сериализации:источник
request.user
. То, вошел ли пользователь в систему или нет, имеет значение только в контексте запроса, например, в сеансе браузера.Следующий блок должен работать:
источник
По вашему мнению:
В функции контроллера добавьте декоратор:
источник
request.user.is_authenticated
если вы знаете, что ваше приложение будет всегда выходить из системыЕсли вы хотите проверить подлинность пользователей в вашем шаблоне, то:
источник
Для версий Django 2.0+ используйте:
Для получения дополнительной информации посетите https://www.django-rest-framework.org/api-guide/requests/#auth
request.user.is_authenticated () был удален в версиях Django 2.0+.
источник
request.user.is_authenticated
все еще в силе. Вы ссылаетесь на документацию django-rest-framework, а не на django