Django中创建用户与修改密码方式

 更新时间:2026年02月05日 09:05:29   作者:wenjunna  
Django中创建用户有三种方式:命令行创建管理员、代码中创建普通用户和使用Django管理后台,创建用户时要注意密码处理,推荐使用`create_user`方法,如果需要重置密码,可以通过命令行、Django Shell或管理后台操作

在 Django 中创建用户有多种方式,具体取决于你是想通过 管理后台命令行 还是 代码(视图/API) 来实现。

以下是三种最常用的方法:

1. 使用命令行创建管理员 (Superuser)

如果你是刚开始开发项目,需要进入 Django Admin 后台,可以使用以下命令:

python manage.py createsuperuser

系统会提示你输入:

  • Username: 用户名
  • Email address: 邮箱
  • Password: 密码(输入时不会显示字符)

2. 在代码中创建普通用户

如果你是在编写注册功能或逻辑脚本,可以使用 Django 内置的 User 模型。

推荐做法:使用 create_user 方法(它会自动处理密码加密)。

from django.contrib.auth.models import User

# 创建用户并保存到数据库
user = User.objects.create_user(
    username='myusername', 
    email='test@example.com', 
    password='mypassword123'
)

# 还可以设置其他属性
user.first_name = 'John'
user.last_name = 'Doe'
user.save()

[!IMPORTANT]

注意: 千万不要使用 User.objects.create() 来创建用户,因为这样会导致密码以明文形式存入数据库,用户将无法登录。

3. 使用 Django 管理后台

这是最直观的图形化操作方式:

  1. 启动服务器:python manage.py runserver
  2. 访问 http://127.0.0.1:8000/admin
  3. 使用管理员账号登录。
  4. 点击 Users (用户) 旁的 Add (+) 按钮。
  5. 输入用户名和密码即可。

核心 API 参考表

方法适用场景密码处理
create_user()标准注册流程自动加密 (Hash)
create_superuser()创建拥有所有权限的管理员自动加密 (Hash)
User.objects.create()错误做法明文存储(极不安全)

进阶建议:自定义用户模型

如果你正在开发一个新项目,Django 官方强烈建议使用 自定义用户模型 (Custom User Model)。这样以后你想用“手机号”或“邮箱”代替“用户名”登录时,就不需要重构整个数据库了。

如果你忘记了 Django 管理员(Superuser)的密码,或者需要重置某个用户的密码,可以根据你的权限等级选择以下方法:

1. 使用命令行重置(最快捷)

如果你有服务器终端的访问权限,这是最简单的方法。Django 提供了一个专门的命令来更改密码:

python manage.py changepassword <用户名>

操作步骤:

  1. 运行上述命令(例如:python manage.py changepassword admin)。
  2. 按照提示输入新密码(输入时字符不可见)。
  3. 确认新密码,完成后系统会提示 Password changed successfully

2. 通过 Django Shell 重置(最灵活)

如果你不记得用户名,或者需要批量操作,可以使用 Python 交互式环境:

python manage.py shell

在 Shell 中输入以下代码:

from django.contrib.auth.models import User

# 1. 查找用户(如果你不记得名字,可以先 User.objects.all() 查看)
user = User.objects.get(username='your_username')

# 2. 设置新密码
user.set_password('new_password123')

# 3. 必须保存!
user.save()

exit()

3. 如果连用户名都忘了怎么办?

如果你完全不记得有哪些超级管理员,可以先进入 Shell 查看列表:

from django.contrib.auth.models import User
# 列出所有超级管理员的用户名
User.objects.filter(is_superuser=True).values_list('username', flat=True)

4. 通过管理后台 (Admin)

如果你已经登录了另一个具有“更改用户”权限的账号:

  1. 进入 /admin/auth/user/
  2. 点击对应的用户名。
  3. 在密码字段附近,通常会有一个**“该表单不包含密码。你可以在此修改密码”**的链接。
  4. 点击链接进入专用修改页面。

常见问题提示

  • Hash 加密: 永远不要直接在数据库(如 SQLite 或 MySQL 客户端)中手动修改密码字段,因为 Django 存储的是经过 PBKDF2 算法加密的 Hash 值,直接输入明文会导致无法登录。
  • Session 失效: 修改密码后,该用户在其他设备上的登录状态会失效(Session 会更新)。

如果你正在使用自定义的用户模型(Custom User Model),导入方式可能略有不同。需要我演示如何获取自定义模型吗?

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python+pandas数据分析实践总结

    Python+pandas数据分析实践总结

    这篇文章主要介绍了Python+pandas数据分析实践总结的相关资料,需要的朋友可以参考下
    2023-07-07
  • Python 根据数据模板创建shapefile的实现

    Python 根据数据模板创建shapefile的实现

    今天小编就为大家分享一篇Python 根据数据模板创建shapefile的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python操作oracle的完整教程分享

    python操作oracle的完整教程分享

    下面小编就为大家分享一篇python操作oracle的完整教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,祝大家游戏愉快哦
    2018-01-01
  • Python3标准库总结

    Python3标准库总结

    在本篇内容中我们给大家总结了关于Python3标准库的相关内容,需要的朋友们跟着学习下。
    2019-02-02
  • numpy中几种随机数生成函数的用法

    numpy中几种随机数生成函数的用法

    numpy是Python中常用的科学计算库,其中也包含了一些随机数生成函数,本文主要介绍了numpy中几种随机数生成函数的用法,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • python引用(import)某个模块提示没找到对应模块的解决方法

    python引用(import)某个模块提示没找到对应模块的解决方法

    今天小编就为大家分享一篇python引用(import)某个模块提示没找到对应模块的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 使用Python进行自动化数据爬取与存储

    使用Python进行自动化数据爬取与存储

    在当今数据驱动的时代,从互联网上获取有价值的信息变得尤为重要,Python,作为一种功能强大且易于学习的编程语言,在数据爬取领域有着广泛的应用,本文将介绍如何使用Python进行自动化数据爬取与存储,需要的朋友可以参考下
    2025-02-02
  • 利用python合并csv文件的方式实例

    利用python合并csv文件的方式实例

    由于项目取数需要,要将两个不同的csv文件合并到一个文件中,所以下面这篇文章主要给大家介绍了关于利用python合并csv文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python高斯消除矩阵

    Python高斯消除矩阵

    今天小编就为大家分享一篇关于Python高斯消除矩阵,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 浅谈Python中的常用内置对象

    浅谈Python中的常用内置对象

    今天带大家复习Python基础知识,文中对Python常用的内置对象作了非常详细的介绍及代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05

最新评论