РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
555 of 818 menu

Атрибут is_active

Атрибут is_active класса User является булевым полем, которое определяет, считается ли учетная запись пользователя активной. По умолчанию для новых пользователей этот атрибут установлен в True. Отключение этого флага позволяет деактивировать пользователя без удаления его из базы данных. При этом деактивированный пользователь не сможет авторизоваться в системе, но все его данные и связи сохраняются.

Синтаксис

Атрибут доступен для любого экземпляра модели User:

user.is_active

Значение по умолчанию

При создании пользователя через менеджер create_user или create_superuser атрибут is_active автоматически устанавливается в True:

from django.contrib.auth.models import User user = User.objects.create_user( username="john_doe", email="john@example.com", password="secret123" ) print(user.is_active)

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

"True"

Деактивация пользователя

Для деактивации пользователя достаточно установить атрибут is_active в False и сохранить изменения:

from django.contrib.auth.models import User user = User.objects.get(username="john_doe") user.is_active = False user.save() print(user.is_active)

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

"False"

После этого пользователь не сможет войти в систему, так как метод authenticate проверяет этот флаг.

Проверка активности

При авторизации Django автоматически проверяет атрибут is_active. Если он равен False, вход будет отклонен:

from django.contrib.auth import authenticate user = authenticate( username="john_doe", password="secret123" ) if user is not None and user.is_active: print("User is active and authenticated") else: print("Authentication failed or user inactive")

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

"Authentication failed or user inactive"

Фильтрация активных пользователей

Атрибут is_active часто используется для фильтрации пользователей в запросах:

from django.contrib.auth.models import User active_users = User.objects.filter(is_active=True) for user in active_users: print(user.username)

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

"admin" "jane_smith" "bob_wilson"

Программная активация

Активация пользователя выполняется аналогичным образом:

from django.contrib.auth.models import User user = User.objects.get(username="john_doe") user.is_active = True user.save() print(f"User {user.username} activated")

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

"User john_doe activated"

Особенности использования

Важно отметить, что атрибут is_active не удаляет пользователя и не влияет на его данные. Это делает его идеальным инструментом для временной блокировки аккаунтов. Также этот флаг используется в методах has_perm и has_module_perms, которые возвращают False для неактивных пользователей:

from django.contrib.auth.models import User user = User.objects.get(username="john_doe") if not user.is_active: print("Inactive users have no permissions") print(user.has_perm("auth.change_user"))

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

"Inactive users have no permissions" "False"

Смотрите также

  • класс User,
    основная модель для работы с пользователями в Django
  • метод has_perm,
    проверяет наличие права у пользователя
  • метод get_full_name,
    возвращает полное имя пользователя
  • атрибут is_staff,
    указывает, имеет ли пользователь доступ к админ-панели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить