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

作者:

文章目录
  • 如果你是刚开始开发项目,需要进入 Django Admin 后台,可以使用以下命令: python manage.py createsuperuser 系统会提示你输入: Username: 用户名 Email address: 邮箱 Password: 密码(输入时不会显示字符)
  • 如果你是在编写注册功能或逻辑脚本,可以使用 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() 来创建用户,因为这样会导致密码以明文形式存入数据库,用户将无法登录。
  • 这是最直观的图形化操作方式: 启动服务器:python manage.py runserver。 访问 http://127.0.0.1:8000/admin。 使用管理员账号登录。 点击 Users (用户) 旁的 Add (+) 按钮。 输入用户名和密码即可。
  • 方法 适用场景 密码处理 create_user() 标准注册流程 自动加密 (Hash) create_superuser() 创建拥有所有权限的管理员 自动加密 (Hash) User.objects.create() 错误做法 明文存储(极不安全)
  • 如果你正在开发一个新项目,Django 官方强烈建议使用 自定义用户模型 (Custom User Model)。这样以后你想用“手机号”或“邮箱”代替“用户名”登录时,就不需要重构整个数据库了。 如果你忘记了 Django 管理员(Superuser)的密码,或者需要重置某个用户的密码,可以根据你的权限等级选择以下方法:
  • 如果你有服务器终端的访问权限,这是最简单的方法。Django 提供了一个专门的命令来更改密码: python manage.py changepassword <用户名> 操作步骤: 运行上述命令(例如:python manage.py changepassword admin)。 按照提示输入新密码(输入时字符不可见)。 确认新密码,完成后系统会提示 Password changed successfully。
  • 如果你不记得用户名,或者需要批量操作,可以使用 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()
  • 如果你完全不记得有哪些超级管理员,可以先进入 Shell 查看列表: from django.contrib.auth.models import User # 列出所有超级管理员的用户名 User.objects.filter(is_superuser=True).values_list(‘username’, flat=True)
  • 如果你已经登录了另一个具有“更改用户”权限的账号: 进入 /admin/auth/user/。 点击对应的用户名。 在密码字段附近,通常会有一个**“该表单不包含密码。你可以在此修改密码”**的链接。 点击链接进入专用修改页面。
  • Hash 加密: 永远不要直接在数据库(如 SQLite 或 MySQL 客户端)中手动修改密码字段,因为 Django 存储的是经过 PBKDF2 算法加密的 Hash 值,直接输入明文会导致无法登录。 Session 失效: 修改密码后,该用户在其他设备上的登录状态会失效(Session 会更新)。 如果你正在使用自定义的用户模型(Custom User Model),导入方式可能略有不同。需要我演示如何获取自定义模型吗?
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Pycharm 创建 Django admin 用户名和密码的实例 利用Django内置的认证视图实现用户密码重置功能详解 django实现登录时候输入密码错误5次锁定用户十分钟
  • 目录
    • 1. 使用命令行创建管理员 (Superuser)
    • 2. 在代码中创建普通用户
    • 3. 使用 Django 管理后台
    • 核心 API 参考表
    • 进阶建议:自定义用户模型
    • 1. 使用命令行重置(最快捷)
    • 2. 通过 Django Shell 重置(最灵活)
    • 3. 如果连用户名都忘了怎么办?
    • 4. 通过管理后台 (Admin)
    • 常见问题提示
    • 总结

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

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

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

    python manage.py createsuperuser
    
    

    系统会提示你输入:

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

    如果你是在编写注册功能或逻辑脚本,可以使用 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() 来创建用户,因为这样会导致密码以明文形式存入数据库,用户将无法登录。

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

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

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

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

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

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

    python manage.py changepassword <用户名>
    
    

    操作步骤:

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

    如果你不记得用户名,或者需要批量操作,可以使用 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()
    
    

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

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

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

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

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

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

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • Pycharm 创建 Django admin 用户名和密码的实例
    • 利用Django内置的认证视图实现用户密码重置功能详解
    • django实现登录时候输入密码错误5次锁定用户十分钟

    站内搜索