Ich verwende Django (Version 1.3) und habe sowohl den Benutzernamen als auch das Passwort des Administrators vergessen. Wie setze ich beide zurück?
Und ist es möglich, einen normalen Benutzer zum Administrator zu machen und dann den Administratorstatus zu entfernen?
python manage.py changepassword <user_name>
python manage.py createsuperuser
erstellt einen weiteren Superuser. Sie können sich bei admin anmelden und sich Ihren Benutzernamen merken.Um einem normalen Benutzer Berechtigungen zu geben, ö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()
Sie können ü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 alle Superuser auf dem System auf. wenn du deinen Benutzernamen aus der Liste erkennst:
usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()
und du setzt ein neues Passwort (:
Sie können einen neuen Superuser mit dem Befehl createsuperuser
erstellen.
Das ist eine sehr gute Frage.
python manage.py changepassword benutzername
Beispiel: -
python manage.py changepassword mickey
neues Setup sollte erstes Ausführenpython manage.py createsuperuser
, um einen Benutzer zu erstellen. Es scheint, als gäbe es keinen Standardbenutzernamen, mit dem Sie sich bei admin anmelden können.
Eine der besten Möglichkeiten, den Benutzernamen und das Kennwort abzurufen, besteht darin, sie anzuzeigen und zu aktualisieren. Das Benutzermodell bietet hierfür die perfekte Möglichkeit.
Liste der Benutzer drucken 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.
Möglicherweise haben Sie auch eine Setup-Frage falsch beantwortet und keine Mitarbeiter. In welchem Fall Kopf zu Postgres:
obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id | 1
is_superuser | f
is_staff | f
...
Zum Korrigieren direkt bearbeiten:
update auth_user set is_staff='true' where id=1;
Wenn Sie vergessen haben, einen Administratorbenutzer zu erstellen, erstellen Sie zuerst einen mit dem Befehl createsuperuser
unter manage.py
, und ändern Sie dann das Kennwort.
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 beschriebene 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
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 - Durch den obigen Vorgang werden Änderungen an den Aktivitätsprotokollen vorgenommen, die von diesem bestimmten Benutzer durchgeführt wurden.
Beachten Sie auch, dass Sie den Status Ihres Benutzers is_staff
als aktiv festlegen. Zumindest funktioniert das so für mich. Für weitere Details habe ich ein anderes superuser
erstellt, wie oben erläutert. Dann gehe ich zur Datenbanktabelle auth_user
und suche nach diesem Benutzernamen, um sicherzustellen, dass sein Flag is_staff
auf 1
gesetzt ist. Damit konnte ich mich endlich auf der admin
Seite einloggen.
python manage.py changepassword benutzername
verwenden
python manage.py dumpdata
dann schau am ende findest du den benutzernamen
Zwei Möglichkeiten, dies zu tun:
Der changepassword
Verwaltungsbefehl:
(env) $ python manage.py changepassword <username>
Oder (erweitert um einige Antworten, funktioniert aber für jedes erweiterte Benutzermodell) mit der Django-Admin-Shell wie folgt:
(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='[email protected]')
>>> user.is_staff = True
>>> user.save()
>>> exit()
N.B. Warum habe ich diese Frage mit dieser Antwort beantwortet?
Denn wie bereits erwähnt, funktioniert User = get_user_model()
für Ihre eigenen User
Modelle. Wenn Sie from Django.contrib.auth.models import User
und dann User.objects.get(username='username')
verwenden, wird möglicherweise der folgende Fehler ausgegeben:
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
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 den CLI-Befehl changepassword
für Django, um das Benutzerpasswort zu ändern
python manage.py changepassword <username>
OR
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()