我在登錄頁面使用了以下兩種方法,但django讓用戶使用不同的密碼註冊自己,並且沒有顯示ValidationError
。django中的密碼驗證/匹配不起作用
from django import forms
from django.contrib.auth import (
authenticate,
get_user_model,
)
User = get_user_model()
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(label='Confirm Password')
password2 = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = [
'email',
'username',
'password',
'password2',
]
方法NO.1:
def clean(self):
cleaned_data = super(UserRegistrationForm, self).clean()
password = cleaned_data.get('password')
password2 = cleaned_data.get('password_confirm ')
if password and password2:
if password != password2:
raise forms.ValidationError("The two password fields must match.")
return cleaned_data
方法二:
def clean_password(self):
password = self.cleaned_data.get('password')
password2 = self.cleaned_data.get('password2')
if password and password2 != password2:
raise forms.ValidationError('Passwords must match')
return self.cleaned_data
FYI使用Django 1.10和python 3.4
可以打印'密碼和password2' –
密碼2 = forms.CharField(標籤= '確認密碼',窗口小部件= forms.PasswordInput) 密碼2 = forms.CharField(小部件= forms.PasswordInput) 爲什麼不 密碼2 = forms.CharField(標籤= '確認密碼',窗口小部件= forms.PasswordInput) – Exprator
@AgamBanga'password'被打印但'password2'正顯示出'None' –