Jak zresetować hasło administratora Django?


451

Używam Django (wersja 1.3) i zapomniałem nazwy użytkownika i hasła administratora. Jak zresetować oba?

Czy jest możliwe, aby zwykły użytkownik stał się administratorem, a następnie usunął status administratora?

Odpowiedzi:


785
python manage.py changepassword <user_name>

zobacz dokumenty


7
właśnie zdałem sobie sprawę, że powiedziałeś, że zapomniałeś nazwę użytkownika ... 'admin' będący nazwą użytkownika w mojej odpowiedzi nie będzie wtedy bardzo pomocny!
JamesO

8
@ user794916 To raczej dziwny wybór, jeśli nie pamiętasz nazwy użytkownika. :-)
DrTyrsa

1
Możesz zmienić nazwę użytkownika z „admin” na inną prawidłową nazwę użytkownika. : D
mxi1

4
django jest najlepszy. wszystko jest takie proste
DMTintner

5
Jeśli nie pamiętasz nazwy użytkownika, możesz zrobić, manage.py createsuperuseraby utworzyć drugiego administratora, a następnie przejrzeć listę użytkowników, aby znaleźć oryginalną. Następnie zaloguj się jako oryginalny i usuń nowego administratora.
shaker

173
  1. python manage.py createsuperuser utworzy kolejnego superużytkownika, będziesz mógł zalogować się do administratora i zapamiętać swoją nazwę użytkownika.
  2. Tak, czemu nie.

Aby nadać zwykłym użytkownikom uprawnienia, otwórz powłokę za pomocą python manage.py shelli spróbuj:

from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()

Jeśli to możliwe, jak to zrobić?
IamH1kc

Przy takim podejściu użytkownik nie może uzyskać dostępu do django admin
keul

3
@LucaFabbri trzeba również ustawićuser.is_staff = True
Aaron McMillin

122

Możesz spróbować za pomocą konsoli:

python manage.py shell

następnie użyj następującego skryptu w powłoce

from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)

wyświetli listę wszystkich superużytkowników w systemie. jeśli rozpoznasz swoją nazwę użytkownika z listy:

usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()

i ustawiłeś nowe hasło (:


12
User.objects.filter(is_superuser=True)
DrTyrsa

pip install django-extensions, dodaj go installed appsi uruchom ./manage.py shell_plus. UserKlasa będzie dostępna i można password-change.
Timo

Ta metoda pozwala użytkownikowi ustawić dowolne hasło, bez sprawdzania poprawności. Możesz więc ustawić bardzo proste hasło (tylko do celów testowych), na co nie pozwala zaakceptowana metoda odpowiedzi.
Gautam J


14

To bardzo dobre pytanie.

python manage.py changepassword nazwa_użytkownika

Przykład: -

python manage.py changepassword mickey

11

najpierw należy uruchomić nową konfigurację,python manage.py createsuperuser aby utworzyć użytkownika. Wygląda na to, że nie ma domyślnego hasła do nazwy użytkownika, aby zalogować się do administratora.


9

Jednym z najlepszych sposobów na odzyskanie nazwy użytkownika i hasła jest ich przeglądanie i aktualizacja. Model użytkownika zapewnia doskonały sposób na to.

W tym przypadku używam Django 1.9

  1. Przejdź do katalogu głównego, tj. gdzie znajduje się plik „manage.py” przy użyciu konsoli lub innej aplikacji, takiej jak Git.
  2. Pobierz powłokę Pythona za pomocą polecenia „python manage.py shell”.
  3. Zaimportuj model użytkownika, wpisując następujące polecenie „z django.contrib.auth.models import User”
  4. Zdobądź wszystkich użytkowników, wpisując następujące polecenie „users = User.objects.all ()”
  5. Wydrukuj listę użytkowników. Dla użytkowników Python 2 użyj polecenia „print users”. Dla użytkowników Python 3 użyj polecenia „print (users)”. Pierwszym użytkownikiem jest zazwyczaj administrator.

  6. Wybierz użytkownika, którego chcesz zmienić hasło, np

    "user = users[0]"

  7. Ustaw hasło

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Zapisz nowe hasło

    "user.save()"

Uruchom serwer i zaloguj się przy użyciu nazwy użytkownika i zaktualizowanego hasła.


Zaletą tej metody manage.py changepasswordjest to, że nie jesteś ograniczony do haseł, których możesz używać, a których nie możesz używać - nie jest już zbyt podobny do bzdur z nazwami użytkowników. (To jest w moim środowisku
deweloperskim. Nie zalecam

5

Możliwe, że źle odpowiedziałeś na pytanie konfiguracyjne i masz zero pracowników. W takim przypadku przejdź do postgres:

obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id           | 1
is_superuser | f
is_staff     | f
...

Aby to naprawić, edytuj bezpośrednio:

update auth_user set is_staff='true' where id=1;

5

Dwa sposoby na to:

Polecenie changepassword zarządzania :

(env) $ python manage.py changepassword <username>

Lub (który rozwija się po kilku odpowiedziach, ale działa dla dowolnego rozszerzonego modelu użytkownika) przy użyciu powłoki django-admin w następujący sposób:

(env) $ python manage.py shell

Powinno to wywołać wiersz poleceń powłoki w następujący sposób:

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

Następnie chcesz następujące:

>>> 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 Dlaczego odpowiedziałem na to pytanie za pomocą tej odpowiedzi?

Ponieważ, jak wspomniano, User = get_user_model()będzie działać dla twoich własnych Usermodeli niestandardowych . Użycie from django.contrib.auth.models import Userwtedy User.objects.get(username='username')może zgłosić następujący błąd:

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'

4

Jeśli zapomniałeś utworzyć użytkownika admin, najpierw zbuduj go z createsuperuserkomendą, manage.pya następnie zmień hasło.


4

Możesz spróbować:

1.Zmień hasło administratora bez konsoli

python manage.py changepassword <username>

2.Zmień hasło administratora w konsoli

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj


1
Używanie zrzutów ekranu zamiast pisanego kodu jest bardzo złą praktyką. Poeple nie może skopiować i wkleić kodu do przetestowania i nie jest dostępny do wyszukiwania w witrynie
FallenAngel

3

W przypadku, gdy nie znasz nazw użytkowników utworzonych tutaj. Możesz zdobyć użytkowników zgodnie z opisem @FallenAngel powyżej.

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

Jednak w przypadku utworzenia niezależnego modelu użytkownika. Prostym przypadkiem jest użycie e-maila jako nazwy użytkownika zamiast domyślnej nazwy użytkownika. W takim przypadku Twój model użytkownika mieszka gdzieś, np. Twoje_konta_aplikacje.modele, to powyższe rozwiązanie nie będzie działać. W takim przypadku możesz zamiast tego użyć metody get_user_model

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

3

jeśli zapomnisz administratora, musisz utworzyć nowego użytkownika za pomocą

python manage.py createsuperuser <username>

a dla hasła dostępna jest komenda CLI changepassword dla django do zmiany hasła użytkownika

python manage.py changepassword <username>

LUB

django-admin changepassword <username>

LUB Uruchom ten kod w Django env

from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()

2

Kolejną rzeczą, na którą warto zwrócić uwagę, jest ustawienie statusu użytkownika is_staffjako aktywnego. Przynajmniej dlatego to działa dla mnie. Aby uzyskać więcej szczegółów, stworzyłem inny, superuserjak ludzie wyjaśnili powyżej. Następnie przechodzę do tabeli bazy danych auth_useri szukam tej nazwy użytkownika, aby upewnić się, że jej is_staffflaga jest ustawiona na 1. To w końcu pozwoliło mi zalogować się na adminstronie.


2

Utwórz nowego superużytkownika za pomocą polecenia „python manage.py opensuperuser”. Zaloguj się jako nowy superużytkownik. Kliknij link „użytkownicy”. Następnie kliknij użytkownika, którego chcesz usunąć. kliknij Usuń użytkownika na końcu strony formularza.

Uwaga - powyższy proces spowoduje zmiany w dziennikach aktywności wykonanych przez tego konkretnego użytkownika.



1

posługiwać się

python manage.py dumpdata

następnie spójrz na koniec, znajdziesz nazwę użytkownika


0

Najlepszym sposobem jest po prostu pójść do terminala i wpisać

python manage.py createsuperuser

i ponownie wprowadź inne hasło i nazwę użytkownika, ale w większości przypadków stracisz część swojego profilu, który wcześniej utworzyłeś.


0

Myślę, że lepszy sposób w wierszu poleceń

python manage.py tworzy superużytkownika


0

To bardzo proste, wystarczy wpisać to polecenie w wierszu polecenia yout

python manage.py changepassword twoja nazwa użytkownika


-1

Innym sposobem na uzyskanie nazwy użytkownika (i większości informacji) jest bezpośredni dostęp do bazy danych i odczytanie informacji z tabel.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.