Я использую форму модели для Пользователя примерно так:
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('username','password','email',)
но поле пароля отображается как обычное текстовое поле, а не как ввод пароля. Как мне убедиться, что в нем отображается поле пароля?
Я пробовал это:
class UserForm(forms.ModelForm):
username = forms.CharField(max_length = 15, min_length = 6)
password = forms.PasswordInput()
class Meta:
model = User
fields = ('username','password','email',)
, но это тоже не работает.
I ' Я также пытаюсь добавить поле подтверждения пароля, но это не приводит к отображению полей:
class UserForm(forms.ModelForm):
username = forms.CharField(max_length = 15, min_length = 6)
password = forms.PasswordInput()
cpassword = forms.PasswordInput()
def clean(self):
if self.cleaned_data['cpassword']!=self.cleaned_data['password']:
raise forms.ValidationError("Passwords don't match")
class Meta:
model = User
fields = ('username','password','cpassword','email',)
Вам не хватает разницы между полями формы и виджетами формы. Виджет - это HTML-представление поля. Если вы используете Django 1.2, вы можете использовать этот синтаксис:
РЕДАКТИРОВАТЬ: Обновить, чтобы включить пароль подтверждения
class UserForm(forms.ModelForm):
confirm_password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ('username','password','email',)
widgets = {
'password': forms.PasswordInput(),
}