Automatizar el comando createuperuser en Django
En Django, el usuario que tiene derechos de administrador se conoce como superusuario. Los superusuarios pueden hacer todo. Pueden crear nuevos usuarios, eliminar usuarios existentes, manipular información de otros usuarios, etc.
En Django, para crear un superusuario, generalmente usamos un comando de línea de comandos, python manage.py createduperuser
, seguido de algunas entradas más: nombre de usuario, correo electrónico y contraseña.
Pero si pudiéramos automatizar todo este proceso o completarlo usando una sola línea de código, ¿no sería asombroso?
En este artículo, aprenderemos a automatizar la creación de superusuarios.
Crear superusuario usando Django Shell
Django Shell es una herramienta de Python de línea de comandos para interactuar con la base de datos utilizando las API de base de datos de Django. Con Django Shell, podemos crear datos en la base de datos, modificar datos existentes e incluso eliminar datos existentes. Además, también podemos crear nuevos usuarios y superusuarios.
Para crear un superusuario usando Django Shell, use el siguiente script.
echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('userUsername', 'userEmail', 'userPassword')" | python manage.py shell
Este script primero importa un método, get_user_model
, para obtener el modelo de usuario utilizado por Django.
Este método recupera una referencia al objeto de modelo de usuario real y la almacena en la variable User
.
Usando esta referencia, luego crea un nuevo superusuario usando create_superuser()
. Este método acepta un nombre de usuario, un correo electrónico y una contraseña.
Tenga en cuenta que estos campos son válidos para el modelo de usuario predeterminado de Django. Si utiliza un modelo de usuario personalizado, los campos para crear un usuario o superusuario cambiarán en consecuencia.
Crear superusuario usando un script de Python
Dado que los modelos de Django son accesibles en todas partes del proyecto Django, podemos usarlos para crear usuarios y superusuarios. Podemos crear una función que acepte algunas entradas y luego crea un superusuario usándolas para esta tarea.
from django.contrib.auth.models import User
def createSuperUser(username, password, email="", firstName="", lastName=""):
invalidInputs = ["", None]
if username.strip() in invalidInputs or password.strip() in invalidInputs:
return None
user = User(
username=username,
email=email,
first_name=firstName,
last_name=lastName,
)
user.set_password(password)
user.is_superuser = True
user.is_staff = True
user.save()
return user
Esta función tiene dos argumentos obligatorios, a saber, nombre de usuario y contraseña, y tres argumentos opcionales. Crea un superusuario basado en los valores pasados y devuelve una referencia al superusuario recién formado.