Атрибут is_anonymous

Атрибут is_anonymous класса User применяется для проверки, авторизован ли пользователь в системе. Это логический атрибут, который всегда возвращает False для экземпляров модели User и всегда True для экземпляров AnonymousUser. Атрибут используется в шаблонах и представлениях для разделения логики для авторизованных и анонимных пользователей.

Синтаксис

pythonuser.is_anonymous

Пример

Проверим, является ли текущий пользователь анонимным в представлении:

pythonfrom 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 в шаблоне для условного отображения контента:

ninja{% if user.is_anonymous %}
  <p>Добро пожаловать, гость! Пожалуйста, <a href="/login/">войдите</a></p>
{% else %}
  <p>Добро пожаловать, {{ user.username }}!</p>
{% endif %}

Пример

Сравним поведение атрибута is_anonymous для авторизованного и анонимного пользователя:

pythonfrom 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

Результат выполнения кода:

python"False"
"True"

Пример

Использование is_anonymous в пользовательском декораторе для проверки доступа:

pythonfrom 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,
    который получает пользователя по идентификатору