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?

IamH1kc
źródło

Odpowiedzi:

785
python manage.py changepassword <user_name>

zobacz dokumenty

JamesO
źródło
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()
DrTyrsa
źródło
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 (:

Upadły anioł
źródł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
23

Możesz utworzyć nowego superużytkownika za pomocą createsuperuserpolecenia.

Aldarunda
źródło
14

To bardzo dobre pytanie.

python manage.py changepassword nazwa_użytkownika

Przykład: -

python manage.py changepassword mickey
anand24
źródło
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.

Kiran P.
źródło
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.

Stephen Mwangi Wanjohi
źródło
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;
Bryce
źródło
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='[email protected]')
>>> 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'
Micheal J. Roberts
źródło
4

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

rapid2share
źródł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

Pan Singh
źródło
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
unlockme
źródło
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()
Saurabh Chandra Patel
źródło
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.

użytkownik1330974
źródło
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.

Ishan Dixit
źródło
1

python manage.py changepassword nazwa użytkownika

Podstawowe zasady
źródło
1

posługiwać się

python manage.py dumpdata

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

Kaczor Donald
źródło
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ś.

CAP.tech
źródło
0

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

python manage.py tworzy superużytkownika

nevriye gül
źródło
0

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

python manage.py changepassword twoja nazwa użytkownika

Shrey
źródło
-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.

Mutken
źródło