为什么在下面给出的Django代码中出现关键错误?

时间:2019-01-08 17:04:05

标签: django django-models django-forms django-templates django-views

operator()

在这段代码中,我在第from django import forms from django.core import validators class FormName(forms.Form): name=forms.CharField() email=forms.EmailField() verify_email=forms.EmailField(label='Confirm your email') text=forms.CharField(widget=forms.Textarea) def clean(self): #Allows us to grab all the clean data at once all_clean_data=super().clean() #This will clean the entire Form email=all_clean_data['email'] vmail=all_clean_data['verify_email'] if email != vmail: raise forms.ValidationError("Make sure your emails match") 行遇到了一个关键错误:

vmail=all_clean_data['verify_email']

2 个答案:

答案 0 :(得分:0)

如果一个字段无效,那么它将不会出现在表单的清除数据中。您可以使用get()以表单的clean方法处理此问题。

def clean(self):  #Allows us to grab all the clean data at once
    all_clean_data=super().clean() #This will clean the entire Form
    email=all_clean_data.get('email')
    vmail=all_clean_data.get('verify_email')
    if email and vemail:
        if email != vmail:
            raise forms.ValidationError("Make sure your emails match")

有关更多信息,请参阅validating fields that depend on each other上的文档。

答案 1 :(得分:0)

代码中没有错误。 我有几乎相同的代码,并且遇到相同的错误,除了我也收到电子邮件字段错误的事实。使用.com填充浏览器中的电子邮件字段使我喜欢而不是像a @ bc那样填充电子邮件字段,当我用a@b.com填充它时,它为我工作。 .co也可以。