一、单个字段验证
class UserRegSerializer(serializers.ModelSerializer): """ 用户注册 """ # 验证用户名是否存在 username = serializers.CharField(label='用户名', help_text='用户名', required=True, allow_blank=True, validators=[UniqueValidator(User.objects.all(), message='用户已存在')]) class Meta: model = User fields = ['username', 'phone', 'password']
二、自定义验证
def phone_validate(value): """ 验证手机号 :param value: 手机号 :return: 手机号/错误信息 """ if not re.match(REGEX_PHONE, value): raise serializers.ValidationError('手机号不合法') else: return value def password_validate(value): """ 验证密码 :param value: 密码 :return: 密码/错误信息 """ if len(value) < 6: raise serializers.ValidationError('密码不能少于6位数') else: return value class UserRegSerializer(serializers.ModelSerializer): """ 用户注册 """ # 验证用户名是否存在 username = serializers.CharField(label='用户名', help_text='用户名', required=True, allow_blank=True, validators=[UniqueValidator(User.objects.all(), message='用户已存在')]) # 验证手机号是否合法 phone = serializers.CharField(label='手机号', help_text='手机号', required=True, allow_blank=True, validators=[phone_validate,]) # 验证密码是否大于6位 password = serializers.CharField(label='密码', help_text='密码', required=True, allow_blank=True, validators=[password_validate, ]) class Meta: model = User fields = ['username', 'phone', 'password']