Jawaban:
python manage.py changepassword <user_name>
manage.py createsuperuser
untuk membuat superuser ke-2, dan kemudian melihat daftar Pengguna untuk menemukan yang asli. Kemudian masuk sebagai yang asli dan hapus superuser baru.
python manage.py createsuperuser
akan membuat superuser lain, Anda dapat masuk ke admin dan mengingat kembali nama pengguna Anda.Untuk memberikan hak pengguna normal, buka shell dengan python manage.py shell
dan coba:
from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()
user.is_staff = True
Anda dapat mencoba melalui konsol:
python manage.py shell
kemudian gunakan skrip berikut di shell
from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)
akan mencantumkan Anda semua pengguna super di sistem. jika Anda mengenali nama pengguna Anda dari daftar:
usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()
dan Anda menetapkan kata sandi baru (:
User.objects.filter(is_superuser=True)
pip install django-extensions
, tambahkan installed apps
dan jalankan ./manage.py shell_plus
. The User
kelas akan tersedia dan Anda bisa password-change
.
Anda dapat membuat superuser baru dengan createsuperuser
perintah.
Salah satu cara terbaik untuk mengambil nama pengguna dan kata sandi adalah melihat dan memperbaruinya. Model Pengguna menyediakan cara yang sempurna untuk melakukannya.
Cetak daftar pengguna Untuk pengguna Python 2 gunakan perintah "cetak pengguna" Untuk pengguna Python 3 gunakan perintah "print (pengguna)" Pengguna pertama biasanya adalah admin.
Pilih pengguna yang ingin Anda ganti kata sandi mis
"user = users[0]"
Atur kata sandi
user.set_password('name_of_the_new_password_for_user_selected')
Simpan kata sandi baru
"user.save()"
Mulai server dan masuk menggunakan nama pengguna dan kata sandi yang diperbarui.
manage.py changepassword
adalah Anda tidak terbatas pada kata sandi apa yang dapat atau tidak dapat Anda gunakan - tidak lebih mirip dengan omong kosong nama pengguna. (Ini di lingkungan dev saya. Saya tidak menganjurkan kata sandi yang lebih lemah. Anda harus selalu menggunakan kata sandi yang kuat di prod.)
Anda mungkin juga salah menjawab pertanyaan pengaturan dan tidak memiliki anggota staf. Dalam hal ini pergilah ke postgres:
obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id | 1
is_superuser | f
is_staff | f
...
Untuk memperbaikinya, edit secara langsung:
update auth_user set is_staff='true' where id=1;
Dua cara untuk melakukan ini:
The changepassword
perintah manajemen :
(env) $ python manage.py changepassword <username>
Atau (yang diperluas pada beberapa jawaban, tetapi berfungsi untuk model Pengguna yang diperluas) menggunakan shell Django-admin sebagai berikut:
(env) $ python manage.py shell
Ini akan memunculkan prompt perintah shell sebagai berikut:
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)
>>>
Maka Anda ingin yang berikut ini:
>>> 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 Mengapa saya menjawab pertanyaan ini dengan jawaban ini?
Karena, sebagaimana disebutkan, User = get_user_model()
akan bekerja untuk User
model kustom Anda sendiri . Menggunakan from django.contrib.auth.models import User
kemudian User.objects.get(username='username')
dapat menimbulkan kesalahan berikut:
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
Jika Anda lupa membuat admin, pertama-tama buat satu dengan createsuperuser
perintah manage.py
lalu ganti kata sandi.
Anda dapat mencoba ini:
1. Ubah kata sandi Superuser tanpa konsol
python manage.py changepassword <username>
2. Ubah kata sandi Superuser melalui konsol
Jika Anda tidak tahu nama pengguna yang dibuat di sini. Anda bisa mendapatkan pengguna seperti yang dijelaskan oleh @FallenAngel di atas.
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
Namun jika Anda membuat model pengguna independen Anda. Kasus sederhana adalah ketika Anda ingin menggunakan email sebagai nama pengguna alih-alih nama pengguna default. Dalam hal model pengguna Anda tinggal di suatu tempat seperti your_accounts_app.models maka solusi di atas tidak akan berfungsi. Dalam hal ini Anda bisa menggunakan metode 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
jika Anda lupa admin Anda maka Anda perlu membuat pengguna baru dengan menggunakan
python manage.py createsuperuser <username>
dan untuk kata sandi ada perintah CLI changepassword
untuk Django untuk mengubah kata sandi pengguna
python manage.py changepassword <username>
ATAU
django-admin changepassword <username>
ATAU Jalankan kode ini dalam Django env
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
Hal lain yang perlu diperhatikan adalah mengatur status pengguna Anda is_staff
sebagai aktif. Setidaknya, itulah yang membuatnya bekerja untuk saya. Untuk lebih detail, saya membuat yang lain superuser
seperti yang dijelaskan orang di atas. Lalu saya pergi ke tabel database auth_user
dan mencari nama pengguna itu untuk memastikan is_staff
flagnya disetel ke 1
. Itu akhirnya memungkinkan saya untuk masuk ke admin
situs.
Buat superuser baru dengan perintah "python manage.py createuperuser". Masuk sebagai pengguna super baru. Klik tautan 'pengguna'. Kemudian klik pada pengguna yang ingin Anda hapus. klik hapus pengguna di akhir halaman formulir.
Catatan - Proses di atas akan membuat perubahan pada log aktivitas yang dilakukan oleh pengguna tertentu.
python manage.py nama pengguna changepassword
menggunakan
python manage.py dumpdata
kemudian lihat pada akhirnya Anda akan menemukan nama pengguna
Saya pikir, Cara yang lebih baik Di baris perintah
python manage.py createuperuser