如何使用 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 管理员账户的访问权限。这一技巧在生产服务器上或未配置基于邮件的密码重置时尤为实用。