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())])
如果在注册之前用户模型中已经存在电子邮件 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())])