Validator 字段验证

一、单个字段验证

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']

二、自定义验证

class UserRegSerializer(serializers.ModelSerializer):
    """
    用户注册
    """
    @staticmethod
    def phone_validate(value):
        if not re.match(REGEX_PHONE, value):
            raise serializers.ValidationError('手机号不合法')
        else:
            return value

    @staticmethod
    def password_validate(value):
        if len(value) < 6:
            raise serializers.ValidationError('密码不能少于6位数')
        else:
            return value

    # 验证用户名是否存在
    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']

猜你喜欢

转载自www.cnblogs.com/mxsf/p/10674980.html