Automatizza il comando createsuperuser in Django
In Django, l’utente che dispone dei diritti di amministratore è noto come superutente. I superutenti possono fare tutto. Possono creare nuovi utenti, eliminare utenti esistenti, manipolare informazioni di altri utenti, ecc.
In Django, per creare un superutente, generalmente utilizziamo un comando da riga di comando, python manage.py createsuperuser
, seguito da alcuni altri input: nome utente, email e password.
Ma se potessimo automatizzare l’intero processo o completarlo utilizzando una singola riga di codice, non sarebbe fantastico?
In questo articolo impareremo ad automatizzare la creazione del superutente.
Crea Superuser usando Django Shell
Django Shell è uno strumento Python da riga di comando per interagire con il database utilizzando le API del database di Django. Utilizzando Django Shell, possiamo creare dati nel database, modificare i dati esistenti e persino eliminare i dati esistenti. Inoltre, possiamo anche creare nuovi utenti e super utenti.
Per creare un superutente usando Django Shell, usa il seguente 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
Questo script importa prima un metodo, get_user_model
, per ottenere il modello utente utilizzato da Django.
Questo metodo recupera un riferimento all’oggetto del modello utente effettivo e lo memorizza nella variabile User
.
Usando questo riferimento, crea quindi un nuovo superutente usando create_superuser()
. Questo metodo accetta un nome utente, un’e-mail e una password.
Nota che questi campi sono validi per il modello utente predefinito di Django. Se utilizzi un modello utente personalizzato, i campi per creare un utente o un superutente cambieranno di conseguenza.
Crea un superutente usando uno script Python
Poiché i modelli Django sono accessibili ovunque nel progetto Django, possiamo usarli per creare utenti e superutenti. Possiamo creare una funzione che accetti alcuni input e quindi crei un superutente che li utilizzi per questo compito.
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
Questa funzione ha due argomenti obbligatori, ovvero nome utente e password, e tre argomenti facoltativi. Crea un superutente in base ai valori passati e restituisce un riferimento al superutente appena formato.