我有一个个人设置页面,用户可以更改他们的密码并确认密码,如果他们这样做的话。我不能将其设置为必填字段,因为他们不必更改密码。是否有示例可以在密码字段不为空的情况下验证确认密码?然后再检查它们是否相等?我没有找到任何这样的示例...
我有一个个人设置页面,用户可以更改他们的密码并确认密码,如果他们这样做的话。我不能将其设置为必填字段,因为他们不必更改密码。是否有示例可以在密码字段不为空的情况下验证确认密码?然后再检查它们是否相等?我没有找到任何这样的示例...
clean
方法中:def clean(self):
password1 = self.cleaned_data.get('password1')
password2 = self.cleaned_data.get('password2')
if password1 and password1 != password2:
raise forms.ValidationError("Passwords don't match")
return self.cleaned_data
编辑
上面的验证错误消息将进入non_field_errors
。您没有指定每个密码字段显示的错误消息,但根据上下文,我想象它是一个“此字段为必填项”的消息。如果是这种情况,请确保在定义表单字段时将required=False
,或者如果您正在使用表单子类(无法编辑实际表单字段),则可以覆盖表单的__init__
方法:
class MyForm(SomeOtherForm):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['password1'].required = False
self.fields['password2'].required = False
if password1 and password1 != password2:
,否则在password1
中输入密码而在password2
中什么也不输入将不会导致验证错误(假设你在两个字段上都有required=False
,这对于“更改密码”表单来说很可能)。 - Anentropicverify_password
字段,如下所示:verify_password = forms.CharField(widget=forms.PasswordInput())
但是我无法让它起作用。 - Noopur Phalak