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

Класс UserManager

Класс UserManager является менеджером по умолчанию для модели User в Django. Он наследуется от BaseUserManager и предоставляет удобные методы для создания пользователей и суперпользователей. Основное назначение менеджера - инкапсулировать логику создания пользователей, включая хэширование пароля и установку прав доступа. Методы менеджера принимают обязательные поля модели пользователя, такие как username и email, а также дополнительные атрибуты в виде ключевых аргументов.

Синтаксис

UserManager.create_user(username, email=None, password=None, **extra_fields) UserManager.create_superuser(username, email=None, password=None, **extra_fields)

Пример . Использование метода create_user

Давайте создадим обычного пользователя с помощью метода create_user:

from django.contrib.auth.models import User # Create a regular user user = User.objects.create_user( username='john_doe', email='john@example.com', password='securepassword123' ) # Check if user was created successfully print(f"User created: {user.username}") print(f"Is active: {user.is_active}") print(f"Is staff: {user.is_staff}") print(f"Is superuser: {user.is_superuser}")

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

"User created: john_doe" "Is active: True" "Is staff: False" "Is superuser: False"

Пример . Использование метода create_superuser

Давайте создадим суперпользователя с помощью метода create_superuser:

from django.contrib.auth.models import User # Create a superuser superuser = User.objects.create_superuser( username='admin', email='admin@example.com', password='adminpassword123' ) # Check superuser attributes print(f"Superuser created: {superuser.username}") print(f"Is staff: {superuser.is_staff}") print(f"Is superuser: {superuser.is_superuser}")

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

"Superuser created: admin" "Is staff: True" "Is superuser: True"

Пример . Создание пользователя с дополнительными полями

Давайте создадим пользователя с указанием дополнительных атрибутов, таких как имя и фамилия:

from django.contrib.auth.models import User # Create user with extra fields user = User.objects.create_user( username='jane_smith', email='jane@example.com', password='janepass456', first_name='Jane', last_name='Smith' ) # Display user details print(f"User: {user.get_full_name()}") print(f"Username: {user.get_username()}") print(f"Email: {user.email}")

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

"User: Jane Smith" "Username: jane_smith" "Email: jane@example.com"

Пример . Обработка ошибок при создании пользователя

Методы менеджера автоматически обрабатывают обязательные поля. Попробуем создать пользователя без имени пользователя:

from django.contrib.auth.models import User from django.db import IntegrityError try: # Attempt to create user without username user = User.objects.create_user( username=None, email='test@example.com', password='test123' ) except IntegrityError as e: print(f"Error: {e}")

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

"Error: NOT NULL constraint failed: auth_user.username"

Пример . Проверка пароля созданного пользователя

Пароль пользователя автоматически хэшируется. Проверим это с помощью метода check_password:

from django.contrib.auth.models import User # Create user user = User.objects.create_user( username='testuser', password='mypassword123' ) # Check password print(f"Password correct: {user.check_password('mypassword123')}") print(f"Password incorrect: {user.check_password('wrongpassword')}") # Password is hashed, not stored in plain text print(f"Password hash: {user.password[:30]}...")

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

"Password correct: True" "Password incorrect: False" "Password hash: pbkdf2_sha256$870000$..."

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

  • метод create_user,
    который создает обычного пользователя
  • метод create_superuser,
    который создает суперпользователя
  • класс User,
    который представляет модель пользователя
  • метод check_password,
    который проверяет пароль пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить