如何验证以便Django中的输入电子邮件相同?

时间:2012-03-25 20:20:58

标签: django django-forms django-validation

我想制作一个用户注册表单,其中包含姓名,姓氏,电子邮件,重新发送电子邮件和密码等字段。

所以我的问题是如何验证,以便输入电子邮件和重新发送电子邮件是相同的。在阅读文档进行验证时,我找不到一些帮助:https://docs.djangoproject.com/en/1.4/ref/validators/

我用Google搜索时发现了这个网站,但是自2006年以来,Django似乎已经发生了很多变化。因为1.4中不存在AlwaysMatchOtherField

这是网站 http://www.b-list.org/weblog/2006/sep/02/django-tips-user-registration/

2 个答案:

答案 0 :(得分:3)

您可以覆盖表单clean方法来执行validate fields that rely on each other

class MyForm(models.ModelForm):

    def clean(self):
        cleaned_data = super(MyForm, self).clean()
        if cleaned_data['email'] != cleaned_data['re_email']:
            raise forms.ValidationError("Your emails don't match")
        return cleaned_data

关于注册表,您应该使用django-registration

答案 1 :(得分:0)

这是我按照https://github.com/django/django/blob/master/django/contrib/auth/forms.py的例子做的:

def clean_email2(self):
    email = self.cleaned_data.get("email")
    email2 = self.cleaned_data.get("email2")
    if email and email != email2:
        raise forms.ValidationError(
            "Your email address differs",
        )
    return email2

为了防止错误,检查电子邮件地址是否已填写非常重要。