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']
答案 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也可以。