get user

root
abc abc
  • 9 Jul

计划:

  1. 明确若要添加额外用户字段验证,需先确认是否使用自定义用户模型。
  2. 若使用自定义用户模型,在模型类里定义 clean 方法来实现额外字段验证逻辑。
  3. 在创建用户时调用 full_clean 方法触发验证。
  4. 给出包含自定义用户模型及验证逻辑的示例代码。

代码:

from django.contrib.auth.models import AbstractUser
from django.core.exceptions import ValidationError
from django.db import models

# 自定义用户模型
class CustomUser(AbstractUser):
    phone_number = models.CharField(max_length=11)

    def clean(self):
        super().clean()
        # 额外字段验证逻辑,例如验证手机号码长度
        if len(self.phone_number)!= 11:
            raise ValidationError({'phone_number': '手机号码必须为 11 位'})

# 创建用户并添加额外验证
from django.contrib.auth import get_user_model

def create_custom_user(username, email, password, phone_number):
    User = get_user_model()
    try:
        user = User(
            username=username,
            email=email,
            password=password,
            phone_number=phone_number
        )
        user.full_clean()  # 触发验证
        user.save()
        return user
    except ValidationError as e:
        # 处理验证错误
        raise ValueError(f"创建用户失败: {str(e)}")
    except Exception as e:
        # 处理其他异常
        raise ValueError(f"创建用户时发生错误: {str(e)}")