Câu trả lời:
python manage.py changepassword <user_name>
manage.py createsuperuser
để tạo siêu người dùng thứ 2 và sau đó xem danh sách Người dùng để tìm tên người dùng ban đầu. Sau đó đăng nhập như bản gốc và xóa siêu người dùng mới.
python manage.py createsuperuser
sẽ tạo một siêu người dùng khác, bạn sẽ có thể đăng nhập vào quản trị viên và ghi nhớ tên người dùng của bạn.Để cung cấp một đặc quyền người dùng bình thường, hãy mở một trình bao với python manage.py shell
và thử:
from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()
user.is_staff = True
Bạn có thể thử thông qua bảng điều khiển:
python manage.py shell
sau đó sử dụng đoạn script sau trong shell
from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)
sẽ liệt kê cho bạn tất cả siêu người dùng trên hệ thống. nếu bạn nhận ra tên người dùng của bạn từ danh sách:
usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()
và bạn đặt mật khẩu mới (:
User.objects.filter(is_superuser=True)
pip install django-extensions
, thêm nó vào installed apps
và chạy ./manage.py shell_plus
. Các User
lớp học sẽ có sẵn và bạn có thể password-change
.
Bạn có thể tạo một siêu người dùng mới với createsuperuser
lệnh.
Một trong những cách tốt nhất để lấy lại tên người dùng và mật khẩu là xem và cập nhật chúng. Mô hình người dùng cung cấp một cách hoàn hảo để làm như vậy.
In danh sách người dùng Đối với người dùng Python 2 sử dụng lệnh "người dùng in" Đối với người dùng Python 3 sử dụng lệnh "print (users)" Người dùng đầu tiên thường là quản trị viên.
Chọn người dùng bạn muốn thay đổi mật khẩu của họ, vd
"user = users[0]"
Đặt mật khẩu
user.set_password('name_of_the_new_password_for_user_selected')
Lưu mật khẩu mới
"user.save()"
Khởi động máy chủ và đăng nhập bằng tên người dùng và mật khẩu được cập nhật.
manage.py changepassword
này là bạn không bị hạn chế đối với những mật khẩu nào bạn có thể hoặc không thể sử dụng - không quá giống với tên người dùng. (Đây là trong môi trường nhà phát triển của tôi. Tôi không ủng hộ mật khẩu yếu hơn. Bạn nên luôn luôn sử dụng mật khẩu mạnh trong sản phẩm.)
Bạn cũng có thể đã trả lời sai một câu hỏi thiết lập và không có nhân viên. Trong trường hợp đầu đến postgres:
obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id | 1
is_superuser | f
is_staff | f
...
Để khắc phục, chỉnh sửa trực tiếp:
update auth_user set is_staff='true' where id=1;
Hai cách để làm điều này:
Lệnh changepassword
quản lý :
(env) $ python manage.py changepassword <username>
Hoặc (mở rộng theo một vài câu trả lời, nhưng hoạt động cho bất kỳ mô hình Người dùng mở rộng nào) bằng cách sử dụng trình bao django-admin như sau:
(env) $ python manage.py shell
Điều này sẽ đưa ra dấu nhắc lệnh shell như sau:
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)
>>>
Sau đó, bạn sẽ muốn như sau:
>>> 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 Tại sao tôi đã trả lời câu hỏi này với câu trả lời này?
Bởi vì, như đã đề cập, User = get_user_model()
sẽ làm việc cho các User
mô hình tùy chỉnh của riêng bạn . Sử dụng from django.contrib.auth.models import User
sau đó User.objects.get(username='username')
có thể ném lỗi sau:
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
Nếu bạn quên tạo người dùng quản trị, trước tiên hãy xây dựng một createsuperuser
lệnh bằng lệnh manage.py
sau đó thay đổi mật khẩu.
Bạn có thể thử điều này:
1. Thay đổi mật khẩu Superuser mà không cần bàn điều khiển
python manage.py changepassword <username>
2. Thay đổi mật khẩu Superuser thông qua bảng điều khiển
Trong trường hợp bạn không biết tên người dùng như được tạo ở đây. Bạn có thể có được những người dùng như được mô tả bởi @FallenAngel ở trên.
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
Tuy nhiên trong trường hợp bạn tạo mô hình người dùng độc lập. Một trường hợp đơn giản là khi bạn muốn sử dụng email làm tên người dùng thay vì tên người dùng mặc định. Trong trường hợp mô hình người dùng của bạn sống ở đâu đó như your_accounts_app.models thì giải pháp trên sẽ không hoạt động. Trong trường hợp này, bạn có thể sử dụng phương thức 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
nếu bạn quên quản trị viên thì bạn cần tạo người dùng mới bằng cách sử dụng
python manage.py createsuperuser <username>
và đối với mật khẩu, có lệnh CLI changepassword
cho django để thay đổi mật khẩu người dùng
python manage.py changepassword <username>
HOẶC LÀ
django-admin changepassword <username>
HOẶC Chạy mã này trong Django env
from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()
Một điều đáng chú ý là đặt trạng thái người dùng của bạn is_staff
là hoạt động. Ít nhất, đó là những gì làm cho nó hoạt động với tôi. Để biết thêm chi tiết, tôi đã tạo một cái khác superuser
như mọi người đã giải thích ở trên. Sau đó, tôi đi đến bảng cơ sở dữ liệu auth_user
và tìm kiếm tên người dùng đó để đảm bảo is_staff
cờ của nó được đặt thành 1
. Điều đó cuối cùng đã cho phép tôi đăng nhập vào admin
trang web.
Tạo một siêu người dùng mới với lệnh "python Manage.py createduperuser". Đăng nhập như siêu người dùng mới. Nhấp vào liên kết 'người dùng. Sau đó bấm vào người dùng bạn muốn xóa. nhấp vào xóa người dùng ở cuối trang mẫu.
Lưu ý - Quá trình trên sẽ thực hiện thay đổi đối với nhật ký hoạt động được thực hiện bởi người dùng cụ thể đó.
python Manage.txt tên người dùng changepassword
sử dụng
python manage.py dumpdata
sau đó nhìn vào cuối bạn sẽ tìm thấy tên người dùng
Tôi nghĩ rằng, cách tốt hơn Tại dòng lệnh
python Manage.txt createduperuser