web-dev-qa-db-de.com

Wie setze ich das Django Administratorkennwort zurück?

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?

386
IamH1kc
python manage.py changepassword <user_name>

siehe docs

664
JamesO
  1. python manage.py createsuperuser erstellt einen weiteren Superuser. Sie können sich bei admin anmelden und sich Ihren Benutzernamen merken.
  2. Ja, warum nicht.

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()
157
DrTyrsa

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 (:

107
FallenAngel

Sie können einen neuen Superuser mit dem Befehl createsuperuser erstellen.

21
Aldarund

Das ist eine sehr gute Frage.

python manage.py changepassword benutzername

Beispiel: -

python manage.py changepassword mickey
14
anand24

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.

11
user3526

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.

In diesem Fall verwende ich Django 1.9

  1. Navigieren Sie zu Ihrem Stammverzeichnis i, e. Die Datei "manage.py" befindet sich auf Ihrer Konsole oder in einer anderen Anwendung wie Git.
  2. Rufen Sie die Python -Shell mit dem Befehl "python manage.py-Shell" ab.
  3. Importieren Sie das Benutzermodell, indem Sie den folgenden Befehl eingeben: "from Django.contrib.auth.models import User"
  4. Rufen Sie alle Benutzer ab, indem Sie den folgenden Befehl eingeben: "users = User.objects.all ()"
  5. 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.

  6. Wählen Sie den Benutzer aus, dessen Passwort Sie ändern möchten, z.

    "user = users[0]"

  7. Legen Sie das Passwort fest

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Speichern Sie das neue Passwort

    "user.save()"

Starten Sie den Server und melden Sie sich mit dem Benutzernamen und dem aktualisierten Passwort an.

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

enter image description hereenter image description here

6
JustChill

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;
6
Bryce

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.

5
rapid2share

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
4
unlockme

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.

3
Ishan Dixit

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.

3
user1330974

python manage.py changepassword benutzername

1
Basant Rules

verwenden

python manage.py dumpdata

dann schau am ende findest du den benutzernamen

0
donald duck

Zwei Möglichkeiten, dies zu tun:

Der changepasswordVerwaltungsbefehl:

(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'
0

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()