Как проверить, является ли этот пользователь анонимным или действительно пользователем в моей системе? - PullRequest
59 голосов
/ 10 января 2011
def index(request):
    the_user = request.user

В Django, как мне узнать, настоящий ли это пользователь или нет? Я попробовал:

if the_user: но AnonymousUser существует, даже если никто не входит в систему. Поэтому он всегда возвращает true, и это не работает.

Ответы [ 4 ]

98 голосов
/ 10 января 2011

Вы можете проверить, возвращает ли request.user.is_anonymous True.

13 голосов
/ 07 марта 2014

Альтернативой

if user.is_anonymous():
    # user is anon user

является тестирование для определения идентификатора объекта пользователя:

if user.id == None:
    # user is anon user
else:
    # user is a real user

см. https://docs.djangoproject.com/en/dev/ref/contrib/auth/#anonymous-users

4 голосов
/ 11 сентября 2014

Я знаю, что я здесь немного копаюсь, но поиск в Google привел меня на эту страницу.

Если ваше представление def требует, чтобы пользователь вошел в систему, вы можете реализовать @login_requiredдекоратор:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    …
0 голосов
/ 16 февраля 2019

У меня была похожая проблема, за исключением того, что это было на странице, на которую был отправлен login_redirect_url.Я должен был положить в шаблоне:

{% if user.is_authenticated %}
    Welcome Back, {{ username }}
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...