如何使用 Django Shell 重置 Django Admin 密码

发布: (2025年12月10日 GMT+8 12:42)
3 min read
原文: Dev.to

Source: Dev.to

忘记 Django 管理员账户的密码会让人感到沮丧,但使用 Django shell 重置密码既快速又简单。即使你已经无法访问管理界面,也不需要额外的包即可完成此操作。

步骤指南

打开 Django shell

在你的项目目录(manage.py 所在位置)运行:

python manage.py shell

这会启动一个已加载 Django 项目的交互式 Python shell。

重置密码

在 shell 中执行:

from django.contrib.auth.models import User

# 将 'admin' 替换为实际的管理员用户名
user = User.objects.get(username='admin')

# 设置新密码(将 'new_secure_password' 替换为你想要的密码)
user.set_password('new_secure_password')

# 保存更改
user.save()

重要提示

  • 使用正确的用户名(通常是 admin,但如果你创建了自定义的超级用户,可能会是其他名称)。
  • set_password() 会自动对密码进行哈希处理——切勿使用 user.password = 'plain_text',因为那样会以明文形式存储密码。

退出 shell

更新密码后,输入:

exit()

或按 Ctrl+D(类 Unix 系统)或 Ctrl+Z 然后 Enter(Windows)。

现在你可以使用用户名和刚设置的新密码登录 Django 管理界面(/admin/)。

额外内容:为任意用户(不仅限管理员)重置密码

同样的方法适用于数据库中的任何用户,只需更改用户名:

user = User.objects.get(username='john_doe')
user.set_password('another_secure_password')
user.save()

故障排除技巧

“User matching query does not exist”

再次确认用户名(区分大小写)。你可以列出所有用户:

User.objects.all()

使用自定义 User 模型

如果项目使用了自定义用户模型(例如 CustomUser),请将 User 替换为你的模型:

from myapp.models import CustomUser
user = CustomUser.objects.get(username='admin')

结论

只需几行代码,你就能在几秒钟内重新获得对 Django 管理员账户的访问权限。这一技巧在生产服务器上或未配置基于邮件的密码重置时尤为实用。

Back to Blog

相关文章

阅读更多 »

Python的秘密生活:导入系统

Python 如何找到你的代码以及它为何有时会丢失 Timothy 懒散地坐在椅子上,盯着他的终端,带着一种筋疲力尽的挫败感,像是……