如何验证django表单中的数据?

时间:2017-04-21 13:29:14

标签: django forms django-models email-validation

我的网站上有一项功能,用户可以与该网站上注册的其他用户共享内容。他们通过输入属于另一个用户的电子邮件来完成此操作。然后发布,将所需用户设置为模型中内容的共享所有者。

检查电子邮件地址属于网站注册用户的最佳方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为有效的方法是使用给定的邮件搜索用户。 Django用户已经有一个独特的邮件字段。

如果你想从基础写作:

from django.core.validators import validate_email

class SampleForm(forms.Form):
    mail = forms.CharField(max_length=50)

    def clean(self):
        cleaned_data = super(SampleForm, self).clean()
        mail = cleaned_data.get('mail')
        # validate the structure of the mail address
        try:
            validate_email(mail)
        except validate_email.ValidationError:
            raise forms.ValidationError('email is not valid')
        # now find if mail has registered
        try:
            User.objects.get(email=mail)
        except User.DoesNotExist:
            raise forms.ValidationError('This mail address is not registered')
        return cleaned_data