Django 休息框架电子邮件验证

Django rest framework email validation

如果在注册之前用户模型中已经存在电子邮件 ID,我想验证它

这是我的带有验证的序列化程序

class RegistrationSerializer(serializers.Serializer):
    username = serializers.CharField(max_length=100)
    email = serializers.EmailField()
    password = serializers.CharField(max_length=100)

    def validate_email(self,attrs):
            email=attrs['email']
            print email
            if email:
                    emailset = Q(email__icontains=email)
                    emailres = User.objects.filter(emailset)
                    if emailres:
                            msg = _('The email address is already taken')
                            raise serializers.ValidationError(msg)
                    else:
                            return attars

抛出错误"TypeError:string indices must be integers"

 email=attrs['email']

类型错误:字符串索引必须是整数

我猜你已经升级或使用 DRF 3.x,所以没有更多的 attrs 字典,而是值。参见 field-level-validation

那边已经有UniqueValidator了。所以我认为你可以这样做:

class RegistrationSerializer(serializers.Serializer):
    #...
    email = serializers.EmailField(validators=[UniqueValidator(queryset=User.objects.all())])