我正在使用Django Forms,对一个字段进行自定义验证时,遇到了奇怪的问题。
forms.py
class RegistrationForm(forms.Form):
username = forms.CharField(max_length=50)
email = forms.EmailField(required=False)
password = forms.CharField(max_length=50)
password1 = forms.CharField(max_length=50)
def clean_password(self):
password = self.cleaned_data['password']
print(self.cleaned_data) # all fields are present except password1 in cleaned Data
re_password = self.cleaned_data['password1'] #Gives Key Error here
# Do something
在clean_password
函数中尝试对密码字段进行验证时,出现了password1
字段的键错误,我不知道为什么会发生这种情况。我尝试过很多搜索,但找不到任何相关的信息,关于是什么导致了这个错误。但后来我尝试改变了一些代码,它起作用了,但我不知道为什么它起作用。
modified_forms.py
class RegistrationForm(forms.Form):
username = forms.CharField(max_length=50)
email = forms.EmailField(required=False)
password1 = forms.CharField(max_length=50) #swapped position
password = forms.CharField(max_length=50)
def clean_password(self):
password = self.cleaned_data['password']
print(self.cleaned_data) # all fields are present in cleaned Data
re_password = self.cleaned_data['password1'] #Doesn't Give Key Error here
# Do something
我所做的更改是只是交换了
password1
和password
这两行的位置,也就是改变了password
和password1
的顺序。我把password1
移动到了password
的那一行,把原来password1
所在的位置放上了password
。这样就解决了一个我不理解的错误。根据我的理解,字段的顺序不应该影响任何东西。可以有人解释一下这里发生了什么吗?谢谢 :)