Antworten:
python manage.py changepassword <user_name>
manage.py createsuperuser
einen zweiten Superuser erstellen und dann die Liste der Benutzer anzeigen, um den ursprünglichen zu finden. Melden Sie sich dann als Original an und löschen Sie den neuen Superuser.
python manage.py createsuperuser
Wenn Sie einen weiteren Superuser erstellen, können Sie sich bei admin anmelden und Ihren Benutzernamen erneut speichern.Um einem normalen Benutzer Berechtigungen zu erteilen, öffnen Sie eine Shell mit python manage.py shell
und versuchen Sie:
from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()
user.is_staff = True
Sie können es über die Konsole versuchen:
python manage.py shell
Verwenden Sie dann das folgende Skript in der Shell
from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)
listet euch alle Superuser im System auf. Wenn Sie Ihren Benutzernamen aus der Liste erkennen:
usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()
und Sie legen ein neues Passwort fest (:
User.objects.filter(is_superuser=True)
pip install django-extensions
, füge es hinzu installed apps
und starte ./manage.py shell_plus
. Die User
Klasse wird verfügbar sein und Sie können password-change
.
Mit createsuperuser
Befehl können Sie einen neuen Superuser erstellen .
Eine der besten Möglichkeiten, den Benutzernamen und das Kennwort abzurufen, besteht darin, sie anzuzeigen und zu aktualisieren. Das Benutzermodell bietet eine perfekte Möglichkeit, dies zu tun.
Drucken einer Benutzerliste Für Python 2-Benutzer verwenden Sie den Befehl "Benutzer drucken". Für Python 3-Benutzer verwenden Sie den Befehl "Drucken (Benutzer)". Der erste Benutzer ist normalerweise der Administrator.
Wählen Sie den Benutzer aus, dessen Passwort Sie ändern möchten, z
"user = users[0]"
Legen Sie das Passwort fest
user.set_password('name_of_the_new_password_for_user_selected')
Speichern Sie das neue Passwort
"user.save()"
Starten Sie den Server und melden Sie sich mit dem Benutzernamen und dem aktualisierten Passwort an.
manage.py changepassword
ist, dass Sie nicht auf die Passwörter beschränkt sind, die Sie verwenden können oder nicht - nicht mehr zu ähnlich wie bei Benutzernamen. (Dies ist in meiner Entwicklungsumgebung. Ich befürworte keine schwächeren Passwörter. Sie sollten immer starke Passwörter in Prod verwenden.)
Möglicherweise haben Sie auch eine falsche Setup-Frage beantwortet und haben keine Mitarbeiter. In diesem Fall gehen Sie zu Postgres:
obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id | 1
is_superuser | f
is_staff | f
...
Zum Reparieren direkt bearbeiten:
update auth_user set is_staff='true' where id=1;
Zwei Möglichkeiten, dies zu tun:
Der changepassword
Verwaltungsbefehl :
(env) $ python manage.py changepassword <username>
Oder (das einige Antworten erweitert, aber für jedes erweiterte Benutzermodell funktioniert) die Django-Admin-Shell wie folgt verwenden:
(env) $ python manage.py shell
Dies sollte die Shell-Eingabeaufforderung wie folgt aufrufen:
Python 3.7.2 (default, Mar 27 2019, 08:44:46)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
Dann möchten Sie Folgendes:
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> user = User.objects.get(username='admin@hug.com')
>>> user.set_password('new password')
>>> user.save()
>>> exit()
NB Warum habe ich diese Frage mit dieser Antwort beantwortet?
Weil, wie erwähnt, User = get_user_model()
für Ihre eigenen benutzerdefinierten User
Modelle funktioniert . Die Verwendung von from django.contrib.auth.models import User
then User.objects.get(username='username')
kann den folgenden Fehler auslösen:
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
Wenn Sie vergessen haben, einen Administrator zu erstellen, erstellen Sie zuerst einen mit dem createsuperuser
Befehl on manage.py
und ändern Sie dann das Kennwort.
Sie können dies versuchen:
1. Ändern Sie das Superuser-Passwort ohne Konsole
python manage.py changepassword <username>
2.Ändern Sie das Superuser-Passwort über die Konsole
Falls Sie die hier erstellten Benutzernamen nicht kennen. Sie können die Benutzer wie oben von @FallenAngel beschrieben abrufen.
python manage.py shell
from django.contrib.auth.models import User
usrs = User.objects.filter(is_superuser=True)
#identify the user
your_user = usrs.filter(username="yourusername")[0]
#youruser = usrs.get(username="yourusername")
#then set the password
Für den Fall, dass Sie Ihr unabhängiges Benutzermodell erstellt haben. Ein einfacher Fall ist, wenn Sie E-Mail als Benutzernamen anstelle des Standardbenutzernamens verwenden möchten. In diesem Fall befindet sich Ihr Benutzermodell an einem Ort wie your_accounts_app.models, und die oben genannte Lösung funktioniert nicht. In diesem Fall können Sie stattdessen die Methode get_user_model verwenden
from django.contrib.auth import get_user_model
super_users = get_user_model().objects.filter(is_superuser=True)
#proceed to get identify your user
# and set their user password
Wenn Sie Ihren Administrator vergessen haben, müssen Sie mithilfe von einen neuen Benutzer erstellen
python manage.py createsuperuser <username>
und für das Passwort gibt es einen CLI-Befehl changepassword
für django, um das Benutzerkennwort zu ändern
python manage.py changepassword <username>
ODER
django-admin changepassword <username>
ODER Führen Sie diesen Code in Django env aus
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
Eine weitere erwähnenswerte Sache ist, den Status Ihres Benutzers is_staff
als aktiv festzulegen. Zumindest funktioniert das bei mir. Für weitere Details habe ich eine andere erstellt, superuser
wie oben erläutert. Dann gehe ich zur Datenbanktabelle auth_user
und suche nach diesem Benutzernamen, um sicherzustellen, dass sein is_staff
Flag auf gesetzt ist 1
. Das erlaubte mir schließlich, mich vor Ort anzumelden admin
.
Erstellen Sie einen neuen Superuser mit dem Befehl "python manage.py createduperuser". Melden Sie sich als neuer Superuser an. Klicken Sie auf den Link "Benutzer". Klicken Sie dann auf den Benutzer, den Sie löschen möchten. Klicken Sie am Ende der Formularseite auf Benutzer löschen.
Hinweis - Mit dem oben beschriebenen Vorgang werden Änderungen an den Aktivitätsprotokollen vorgenommen, die von diesem bestimmten Benutzer erstellt wurden.
python manage.py changepassword Benutzername
verwenden
python manage.py dumpdata
Dann schauen Sie am Ende nach dem Benutzernamen
Ich denke, der bessere Weg an der Kommandozeile
python manage.py erstellt einen Superuser