ChatGPT解决这个技术问题 Extra ChatGPT

如何重置 Django 管理员密码?

我正在使用 Django(1.3 版)并且忘记了管理员用户名和密码。如何重置两者?

是否可以将普通用户设置为管理员,然后删除管理员状态?

请不要在一篇文章中问两个不同的问题。

R
Rik Schoonbeek
python manage.py changepassword <user_name>

see docs


刚刚意识到您说您忘记了用户名...“管理员”作为我的答案中的用户名不会有太大帮助!
@user794916 如果您不记得用户名,那将是一个相当奇怪的选择。 :-)
您可以将用户名从“admin”更改为另一个正确的用户名。 :D
django 是最好的。一切都那么简单
如果您忘记了用户名,您可以执行 manage.py createsuperuser 创建第二个超级用户,然后查看用户列表以找到原始用户。然后以原始用户身份登录并删除新的超级用户。
S
Sursh

python manage.py createsuperuser 将创建另一个超级用户,您将能够登录到管理员并记住您的用户名。是的,为什么不。

要授予普通用户权限,请使用 python manage.py shell 打开 shell 并尝试:

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

如果可能,该怎么做?
使用这种方法似乎用户无法访问 django admin
@LucaFabbri 您还需要设置 user.is_staff = True
F
FallenAngel

您可以通过控制台尝试:

python manage.py shell

然后在shell中使用以下脚本

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

将列出系统上的所有超级用户。如果您从列表中认出您的用户名:

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

并且您设置了一个新密码(:


User.objects.filter(is_superuser=True)
pip install django-extensions,将其添加到 installed apps 并运行 ./manage.py shell_plusUser 类将可用,您可以password-change
此方法允许用户设置任何密码,无需任何验证。因此,您可以设置一个非常简单的密码(仅用于测试目的),这是公认的答案方法所不允许的。
非常感谢这对我有用!继续努力
G
Gottlieb Notschnabel

您可以使用 createsuperuser 命令创建新的超级用户。


a
anand24

这是一个很好的问题。

python manage.py 更改密码用户名

例子 :-

python manage.py changepassword mickey

C
Community

检索用户名和密码的最佳方法之一是查看和更新它们。用户模型提供了一种完美的方式来做到这一点。

在这种情况下,我使用的是 Django 1.9

导航到您的根目录,即使用您的控制台或其他应用程序(例如 Git)来查找“manage.py”文件所在的位置。使用命令“python manage.py shell”检索 Python shell。通过输入以下命令导入用户模型“from django.contrib.auth.models import User”通过输入以下命令获取所有用户“users = User.objects.all()”打印用户列表对于 Python 2用户使用命令“print users” 对于 Python 3 用户使用命令“print(users)” 第一个用户通常是管理员。选择您要更改密码的用户,例如“user = users[0]” 设置密码 user.set_password('name_of_the_new_password_for_user_selected') 保存新密码“user.save()”

启动服务器并使用用户名和更新的密码登录。


此方法优于 manage.py changepassword 的优点是您不受限制可以使用或不能使用的密码 - 不再类似于用户名废话。 (这是在我的开发环境中。我不提倡使用较弱的密码。您应该始终在产品中使用强密码。)
M
Mossab

除了@JamesO 回答说使用

python manage.py changepassword [username]

如果您不记得您的用户名:

1-在项目的主目录中访问数据库(我使用的是 sqlite3):

sqlite3 db.sqlite3

2- 列出 auth_user 表的内容

SELECT * FROM auth_user ;

3-查找具有 is_superuser = 1 的用户,在我的情况下是管理员 screenshot of the command output (I don't have enough rep points)


M
Max

新设置应该首先运行 python manage.py createsuperuser来创建用户。似乎没有默认的用户名密码来登录管理员。


j
jerrymouse

有两种方法可以做到这一点:

changepassword 管理命令

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

或者(扩展了几个答案,但适用于任何扩展的用户模型)使用 django-admin shell 如下:

(env) $ python manage.py shell

这应该会打开 shell 命令提示符,如下所示:

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

然后你会想要以下内容:

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

注意为什么我用这个答案回答了这个问题?

因为如前所述,User = get_user_model() 将适用于您自己的自定义 User 模型。使用 from django.contrib.auth.models import User 然后 User.objects.get(username='username') 可能会引发以下错误:

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

这个答案是为现有用户设置通用/短密码的好方法。
M
Mr Singh

你可以试试这个:

1.无控制台更改超级用户密码

python manage.py changepassword <username>

2.通过控制台修改超级用户密码

https://i.stack.imgur.com/I2BLt.png


使用屏幕截图而不是编写代码是非常糟糕的做法。人们无法复制粘贴您的代码进行测试,并且它不可用于现场搜索
S
Samsul Islam
python manage.py changepassword username

G
Gottlieb Notschnabel

您可能还错误地回答了设置问题并且员工人数为零。在这种情况下,请前往 postgres:

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

要修复,请直接编辑:

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

M
Martin Krung

如果您忘记在 manage.py 上先使用 createsuperuser 命令创建管理员用户,请更改密码。


S
Saurabh Chandra Patel

如果您忘记了管理员,那么您需要使用创建新用户

python manage.py createsuperuser <username>

对于密码,有 CLI 命令 changepassword 供 django 更改用户密码

python manage.py changepassword <username>

或者

django-admin changepassword <username>

或在 Django 环境中运行此代码

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

u
unlockme

如果您不知道此处创建的用户名。您可以按照上面@FallenAngel 的描述获取用户。

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

但是,如果您创建了独立的用户模型。一个简单的情况是当您想使用电子邮件作为用户名而不是默认用户名时。在这种情况下,您的用户模型存在于诸如 your_accounts_app.models 之类的地方,那么上述解决方案将不起作用。在这种情况下,您可以改用 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

u
user1330974

另一件值得注意的事情是将用户的状态 is_staff 设置为活动。至少,这就是它对我有用的原因。有关更多详细信息,我创建了另一个 superuser,正如人们在上面解释的那样。然后我转到数据库表 auth_user 并搜索该用户名以确保其 is_staff 标志设置为 1。这终于让我能够登录到 admin 站点。


I
Ishan Dixit

使用命令“python manage.py createsuperuser”创建一个新的超级用户。以新的超级用户身份登录。点击“用户”链接。然后单击要删除的用户。单击表单页面末尾的删除用户。

注意 - 上述过程将更改该特定用户所做的活动日志。


T
Tomerikoo

只需在命令行中输入以下命令:

python manage.py changepassword yourusername

7
7guyo

如果您使用自定义用户模型

(venv)your_prj $ ./manage.py shell
>>> from customusers.models import CustomUser
>>> CustomUser.objects.filter(is_superuser=True)
>>> user = CustomUser.objects.get(email="somesuper@sys.com")
>>> user.set_password('@NewPwd')
>>> user.save()
>>> exit()

D
Dharman

最好的方法是去你的终端并输入

python manage.py createsuperuser

并再次插入另一个密码和用户名,但在大多数情况下,您将丢失您之前创建的一些个人资料。


请不要遵循此解决方案。
d
donald duck

利用

python manage.py 转储数据

然后看看最后你会发现用户名


转储可能包含用户名,但密码使用单向哈希函数进行哈希处理,这对于恢复密码不应该(也不是)有用。此外,当用户可以访问正在运行的数据库并且可以使用适当的客户端连接到它时,无需转储数据库进行浏览。
n
nevriye gül

我认为,更好的方式在命令行

python manage.py createsuperuser


o
obotezat

如果在 /admin/ website 中需要 reset_password 链接,则可以这样做:https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#adding-a-password-reset-feature


M
Mutken

获取用户名(以及大部分信息)的另一种方法是直接访问数据库并从表中读取信息。