计划: 1. 确认使用 get_user_model 的正确方式,避免直接导入 User 模型。 2. 确保在创建用户时使用 create_user 方法而非 create,以正确处理密码哈希。 3. 验证必填字段是否符合自定义用户模型的要求(如有自定义用户模型)。 4. 处理可能的异常,如 IntegrityError 或 ValidationError。 5. 提供示例代码展示最佳实践。 代码: ```python from django.contrib.auth import get_user_m

root
abc abc
  • 9 Jul

计划:

  1. 确认使用 get_user_model 的正确方式,避免直接导入 User 模型。
  2. 确保在创建用户时使用 create_user 方法而非 create,以正确处理密码哈希。
  3. 验证必填字段是否符合自定义用户模型的要求(如有自定义用户模型)。
  4. 处理可能的异常,如 IntegrityError 或 ValidationError。
  5. 提供示例代码展示最佳实践。

代码:

from django.contrib.auth import get_user_model
from django.db.utils import IntegrityError

def create_user(username, email, password):
    User = get_user_model()
    try:
        user = User.objects.create_user(
            username=username,
            email=email,
            password=password
        )
        return user
    except IntegrityError as e:
        # 处理唯一约束冲突(如重复用户名或邮箱)
        raise ValueError(f"创建用户失败: {str(e)}")
    except Exception as e:
        # 处理其他可能的异常(如验证错误)
        raise ValueError(f"创建用户时发生错误: {str(e)}")