Метод create_superuser
Метод create_superuser применяется к менеджеру пользователей
и создает нового суперпользователя с указанными учетными данными.
Он автоматически устанавливает для пользователя флаги is_staff,
is_superuser и is_active в значение True, что дает
ему полный доступ к административной панели. Метод обычно используется
в скриптах инициализации или при создании учетных записей
администраторов через код.
Синтаксис
UserModel.objects.create_superuser(username, email, password, **extra_fields)
Параметры
Метод принимает обязательные позиционные аргументы:
username - имя пользователя, email - адрес электронной почты,
password - пароль для учетной записи. Также можно передать
дополнительные поля модели через именованные аргументы
**extra_fields, например, first_name, last_name или
произвольные поля, определенные в кастомной модели пользователя.
Пример . Создание суперпользователя
Создадим суперпользователя с именем "admin", почтой "admin@example.com"
и паролем "secure_pass123":
from django.contrib.auth import get_user_model
User = get_user_model()
superuser = User.objects.create_superuser(
username="admin",
email="admin@example.com",
password="secure_pass123"
)
print(superuser.username)
print(superuser.is_superuser)
print(superuser.is_staff)
Результат выполнения кода:
"admin"
"True"
"True"
Пример . С дополнительными полями
Создадим суперпользователя с указанием имени и фамилии:
from django.contrib.auth import get_user_model
User = get_user_model()
superuser = User.objects.create_superuser(
username="john_doe",
email="john@example.com",
password="johnadmin123",
first_name="John",
last_name="Doe"
)
print(f"Full name: {superuser.get_full_name()}")
print(f"Is active: {superuser.is_active}")
Результат выполнения кода:
"Full name: John Doe"
"Is active: True"
Пример . Использование в скрипте инициализации
Создадим суперпользователя только в том случае, если его еще нет в базе данных:
from django.contrib.auth import get_user_model
User = get_user_model()
if not User.objects.filter(username="admin").exists():
User.objects.create_superuser(
username="admin",
email="admin@example.com",
password="defaultadmin123"
)
print("Superuser created successfully")
else:
print("Superuser already exists")
Результат выполнения кода:
"Superuser created successfully"
Смотрите также
-
метод
create_user,
который создает обычного пользователя без прав администратора -
метод
authenticate,
который проверяет учетные данные пользователя -
метод
login,
который выполняет вход пользователя в систему -
метод
set_password,
который устанавливает пароль для существующего пользователя