11
我有一個配置文件設置頁面,用戶可以更改他們的密碼,他們必須確認它,如果他們這樣做。我無法將其設置爲必填字段,因爲他們不必更改密碼。如果密碼字段不爲空,是否有一個驗證確認密碼的示例?然後檢查它們是否相同?我無法找到任何這樣的例子...django確認密碼驗證器
我有一個配置文件設置頁面,用戶可以更改他們的密碼,他們必須確認它,如果他們這樣做。我無法將其設置爲必填字段,因爲他們不必更改密碼。如果密碼字段不爲空,是否有一個驗證確認密碼的示例?然後檢查它們是否相同?我無法找到任何這樣的例子...django確認密碼驗證器
以下內容添加到您的窗體的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
請參閱上面的編輯。 – 2012-07-06 20:45:01
謝謝!我實際上只是在編輯之前找到了它。對於其他人的參考:https://docs.djangoproject.com/en/dev/ref/forms/validation/ – KVISH 2012-07-06 20:45:51
我想你實際上是想'如果密碼1和密碼1!=密碼2:'否則輸入密碼在'密碼1'和'password2'中的任何內容都不會導致驗證錯誤(假設您在兩個字段上都有'required = False',這可能是'更改密碼'表單) – Anentropic 2013-08-13 11:15:34