Атрибут is_anonymous
Атрибут is_anonymous класса User применяется
для проверки, авторизован ли пользователь в системе.
Это логический атрибут, который всегда возвращает
False для экземпляров модели User и всегда
True для экземпляров AnonymousUser.
Атрибут используется в шаблонах и представлениях
для разделения логики для авторизованных и анонимных
пользователей.
Синтаксис
user.is_anonymous
Пример
Проверим, является ли текущий пользователь анонимным в представлении:
from django.http import HttpResponse
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
def check_user(request):
if request.user.is_anonymous:
return HttpResponse("Пользователь не авторизован")
else:
return HttpResponse(f"Привет, {request.user.username}")
Пример
Использование атрибута is_anonymous в шаблоне
для условного отображения контента:
{% if user.is_anonymous %}
<p>Добро пожаловать, гость! Пожалуйста, <a href="/login/">войдите</a></p>
{% else %}
<p>Добро пожаловать, {{ user.username }}!</p>
{% endif %}
Пример
Сравним поведение атрибута is_anonymous для
авторизованного и анонимного пользователя:
from django.contrib.auth.models import User, AnonymousUser
# Создаем авторизованного пользователя
user = User(username="john")
print(user.is_anonymous) # False
# Создаем анонимного пользователя
anon_user = AnonymousUser()
print(anon_user.is_anonymous) # True
Результат выполнения кода:
"False"
"True"
Пример
Использование is_anonymous в пользовательском
декораторе для проверки доступа:
from django.http import HttpResponseForbidden
from django.contrib.auth.models import User
def check_auth(view_func):
def wrapper(request, *args, **kwargs):
if request.user.is_anonymous:
return HttpResponseForbidden("Требуется авторизация")
return view_func(request, *args, **kwargs)
return wrapper
@check_auth
def dashboard(request):
return HttpResponse("Панель управления")
Смотрите также
-
атрибут
is_authenticated,
который проверяет, авторизован ли пользователь -
класс
AnonymousUser,
который представляет анонимного пользователя -
декоратор
login_required,
который ограничивает доступ для анонимных пользователей -
метод
get_user,
который получает пользователя по идентификатору