Automatizar o comando cria superusuário no Django
No Django, o usuário com direitos de administrador é conhecido como superusuário. Os superusuários podem fazer tudo. Eles podem criar novos usuários, excluir usuários existentes, manipular informações de outros usuários, etc.
No Django, para criar um superusuário, geralmente usamos um comando de linha de comando, python manage.py trema superusuário
, seguido por mais algumas entradas: nome de usuário, email e senha.
Mas se pudéssemos automatizar todo esse processo ou completá-lo usando uma única linha de código, isso não seria incrível?
Neste artigo, aprenderemos a automatizar a criação de superusuário.
Crie um superusuário usando o Django Shell
Django Shell é uma ferramenta Python de linha de comando para interagir com o banco de dados usando APIs de banco de dados do Django. Usando o Django Shell, podemos criar dados no banco de dados, modificar os dados existentes e até mesmo excluir os dados existentes. Além disso, também podemos criar novos usuários e superusuários.
Para criar um superusuário usando Django Shell, use o seguinte 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 primeiro importa um método, get_user_model
, para obter o modelo de usuário usado pelo Django.
Este método recupera uma referência ao objeto de modelo do usuário real e a armazena na variável User
.
Usando esta referência, ele cria um novo superusuário usando create_superuser()
. Este método aceita um nome de usuário, um e-mail e uma senha.
Observe que esses campos são válidos para o modelo de usuário padrão do Django. Se você usar um modelo de usuário personalizado, os campos para criar um usuário ou superusuário serão alterados de acordo.
Crie um superusuário usando um script Python
Como os modelos Django estão acessíveis em qualquer lugar no projeto Django, podemos usá-los para criar usuários e superusuários. Podemos criar uma função que aceita algumas entradas e, em seguida, cria um superusuário usando-as para esta tarefa.
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 função possui dois argumentos obrigatórios, a saber, nome de usuário e senha, e três argumentos opcionais. Ele cria um superusuário com base nos valores passados e retorna uma referência ao superusuário recém-formado.