【问题标题】:Django rest framework email validationDjango 休息框架电子邮件验证
【发布时间】:2015-04-23 04:06:05
【问题描述】:

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

TypeError:字符串索引必须是整数

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

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

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

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

    【讨论】:

    • @Todor,太棒了!
    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2015-06-30
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多