Django yönetici şifresi nasıl sıfırlanır?


451

Django (sürüm 1.3) kullanıyorum ve hem yönetici kullanıcı adını hem de şifreyi unuttum. Her ikisi de nasıl sıfırlanır?

Ve normal bir kullanıcıyı yönetici haline getirmek ve ardından yönetici durumunu kaldırmak mümkün müdür?

Yanıtlar:


786
python manage.py changepassword <user_name>

belgelere bakın


7
Sadece kullanıcı adını unuttuğunuzu fark ettiniz ... 'admin' cevabımdaki kullanıcı adı olmak o zaman çok yardımcı olmayacak!
JamesO

8
@ user794916 Kullanıcı adını hatırlamıyorsanız bu oldukça garip bir seçimdir. :-)
DrTyrsa

1
Kullanıcı adını "admin" yerine başka bir uygun kullanıcı adıyla değiştirebilirsiniz. : D
mxi1

4
django en iyisi. her şey çok kolay
DMTintner

5
Kullanıcı adını unuttuysanız, manage.py createsuperuser2. bir süper kullanıcı oluşturmak ve ardından orijinali bulmak için Kullanıcıların listesini görüntülemek için bunu yapabilirsiniz . Ardından orijinal olarak oturum açın ve yeni süper kullanıcıyı silin.
shacker

173
  1. python manage.py createsuperuser başka bir süper kullanıcı oluşturacaksa, yönetici oturum açıp kullanıcı adınızı hatırlatabilirsiniz.
  2. Evet neden olmasın.

Normal kullanıcı ayrıcalıkları vermek için, ile bir kabuk açın python manage.py shellve şunu deneyin:

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

Mümkünse, nasıl yapılır?
IamH1kc

Bu yaklaşımla, kullanıcının django
admin'e erişemediği anlaşılıyor

3
@LucaFabbri ayrıca ayarlamanız gerekiruser.is_staff = True
Aaron McMillin

122

Konsolu deneyebilirsiniz:

python manage.py shell

sonra kabukta aşağıdaki komut dosyasını kullanın

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

sistemdeki tüm süper kullanıcıları listeleyecektir. listeden yur kullanıcı adınızı biliyorsanız:

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

ve yeni bir şifre belirlersiniz (:


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

pip install django-extensions, ekleyin installed appsve çalıştırın ./manage.py shell_plus. UserSınıf mevcut olacak ve mümkün password-change.
Timo

Bu yöntem, kullanıcının herhangi bir doğrulama yapmadan herhangi bir parola belirlemesini sağlar. Böylece, kabul edilen cevap yönteminin izin vermediği çok basit bir şifre ayarlayabilirsiniz (sadece test amaçlı).
Gautam J


14

Bu çok iyi bir soru.

python manage.py changepassword kullanıcı_adı

Misal :-

python manage.py changepassword mickey

11

Yeni sistem olmalıdır ilk çalıştırmak python manage.py createsuperuser kullanıcı oluşturmak için. Yönetici olarak oturum açmak için varsayılan bir kullanıcı adı şifresi yok gibi görünüyor.


9

Kullanıcı adını ve şifreyi almanın en iyi yollarından biri onları görüntülemek ve güncellemektir. Kullanıcı Modeli bunu yapmak için mükemmel bir yol sağlar.

Bu durumda, Django 1.9 kullanıyorum

  1. Kök dizininize gidin i, e. Burada "manage.py" dosyası konsolunuz veya Git gibi başka bir uygulama kullanılarak bulunur.
  2. "Python manage.py shell" komutunu kullanarak Python kabuğunu alın.
  3. "Django.contrib.auth.models import User'dan" komutunu yazarak Kullanıcı Modelini içe aktarın
  4. Aşağıdaki komutu "users = User.objects.all ()" yazarak tüm kullanıcıları edinin
  5. Kullanıcıların listesini yazdırma Python 2 kullanıcıları için "print users" komutunu kullanın Python 3 kullanıcıları için "print (users)" komutunu kullanın İlk kullanıcı genellikle admin'dir.

  6. Parolasını değiştirmek istediğiniz kullanıcıyı seçin, ör.

    "user = users[0]"

  7. Parolayı belirleyin

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Yeni şifreyi kaydet

    "user.save()"

Sunucuyu başlatın ve kullanıcı adını ve güncellenmiş şifreyi kullanarak oturum açın.


Bu yöntemin avantajı, manage.py changepasswordhangi parolaları kullanabileceğiniz veya kullanamayacağınızla sınırlı kalmamanızdır - artık kullanıcı adı bokuna çok benzemez. (Bu benim geliştirme ortamımda. Daha zayıf parolaları savunmuyorum. Her zaman
eşyalarda

5

Ayrıca bir kurulum sorusunu yanlış yanıtlamış olabilirsiniz ve sıfır personeliniz olabilir. Bu durumda postgres'e gidin:

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

Düzeltmek için doğrudan düzenleyin:

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

5

Bunu yapmanın iki yolu:

changepassword Yönetim komutu :

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

Veya (birkaç cevap üzerine genişler, ancak herhangi bir genişletilmiş Kullanıcı modeli için çalışır) django-admin kabuğunu kullanarak :

(env) $ python manage.py shell

Bu, shell komut istemini aşağıdaki gibi getirmelidir:

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

O zaman aşağıdakileri istersiniz:

>>> 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 Bu soruyu neden bu cevapla cevapladım?

Çünkü, belirtildiği gibi, User = get_user_model()kendi özel Usermodelleriniz için çalışacaktır . Kullanımı from django.contrib.auth.models import Userdaha sonra User.objects.get(username='username')aşağıdaki hatayı atmak olabilir:

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

4

Yönetici kullanıcı oluşturmayı unuttuysanız, önce createsuperuserkomutla bir tane oluşturun , manage.pyardından şifreyi değiştirin.


4

Bunu deneyebilirsiniz:

1. konsol olmadan süper kullanıcı şifresini değiştirme

python manage.py changepassword <username>

Konsol üzerinden Superuser şifresini değiştirin

resim açıklamasını buraya girin resim açıklamasını buraya girin


1
Yazılı kod yerine ekran görüntüsü kullanmak çok kötü bir uygulamadır. Poeple test etmek için kodunuzu kopyalayıp yapıştıramaz ve site içi arama için kullanılamaz
FallenAngel

3

Burada oluşturulan kullanıcı adlarını bilmiyorsanız. Kullanıcıları yukarıda @FallenAngel tarafından açıklandığı gibi alabilirsiniz.

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

Ancak bağımsız kullanıcı modelinizi yaratmanız durumunda. Basit bir durum, e-postayı varsayılan kullanıcı adı yerine kullanıcı adı olarak kullanmak istediğiniz zamandır. Bu durumda, kullanıcı modeliniz your_accounts_app.models gibi bir yerde yaşarsa, yukarıdaki çözüm işe yaramaz. Bu durumda bunun yerine get_user_model yöntemini kullanabilirsiniz

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

yöneticinizi unutursanız şunu kullanarak yeni kullanıcı oluşturmanız gerekir:

python manage.py createsuperuser <username>

ve parola changepassword için django'nun kullanıcı parolasını değiştirmesi için CLI komutu vardır

python manage.py changepassword <username>

VEYA

django-admin changepassword <username>

VEYA Bu kodu Django env'de çalıştır

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

2

Dikkate değer başka bir şey, kullanıcı durumunuzu is_staffaktif olarak ayarlamaktır . En azından benim için işe yarayan şey bu. Daha fazla ayrıntı için, superuserinsanların yukarıda açıkladığı gibi bir tane daha oluşturdum . Sonra veritabanı tablosuna gidip bayrağının ayarlandığından auth_useremin olmak için bu kullanıcı adını is_staffararım 1. Sonunda adminsiteye giriş yapmama izin verdi .


2

"Python manage.py createuperuser" komutuyla yeni bir süper kullanıcı oluşturun. Yeni süper kullanıcı olarak giriş yapın. 'Kullanıcılar' bağlantısını tıklayın. Ardından silmek istediğiniz kullanıcıyı tıklayın. form sayfasının sonundaki kullanıcıyı sil'i tıklayın.

Not - Yukarıdaki işlem, söz konusu kullanıcı tarafından yapılan etkinlik günlüklerinde değişiklik yapacaktır.



1

kullanım

python manage.py dumpdata

o zaman sonuna bak kullanıcı adını bulacaksınız


0

En iyi yol sadece terminalinize gitmek ve yazmaktır

python manage.py createsuperuser

ve tekrar başka bir şifre ve kullanıcı adı girin, ancak çoğu durumda u daha önce oluşturduğunuz profilinizin bir kısmını kaybedersiniz.


0

Bence, daha iyi bir yol Komut satırında

python manage.py create süper kullanıcı


0

Çok kolay, sadece bu komutu komut satırınıza yazın

python manage.py changeparola kullanıcı adınız


-1

Kullanıcı adını (ve bilgilerin çoğunu) almanın başka bir yolu da veritabanına doğrudan erişmek ve tablolardan bilgileri okumaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.