@pgs

Как правильно в форму добавить атрибуты?

Есть форма создания пользователя в forms.py
class UserRegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ('email', 'password1', 'password2',)
        widgets = {
            'password1': forms.PasswordInput(attrs={'placeholder': 'password'}),
            'password2': forms.PasswordInput(attrs={'placeholder': 'password'}),
        }
.....


Форму показываю в шаблоне через {{ form.email }} {{ form.password1 }} {{ form.password2 }}
При заходе на страницу - форма не дополняется аттрибутами, и ошибок никаких не пишет.
Если я изменю email = forms.EmailField(required=True) на email = forms.EmailField(required=True), widget=forms.EmailInput(attrs={'placeholder': 'email'})) то на странице в форме в поле email добавляется placeholder, но если я добавлю по аналогии password1 и password2 (без required) - то дев сервер при старте выдает ошибку:
password1 = forms.PasswordInput(widget=forms.PasswordInput(attrs={'placeholder': 'password'}))
TypeError: __init__() got an unexpected keyword argument 'widget'
Подскажите в каком направлении копать, в документации сказано делать первым вариантом (если я все верно понял)
  • Вопрос задан
  • 671 просмотр
Решения вопроса 1
Виджеты в Meta для полей password1, password2 работать не будут, т.к. данное поле определено вручную в UserCreationForm от которой вы наследуетесь, поэтому поля надо определять явно.
Ошибка - forms.PasswordInput это виждет, а не поле, т.е. должно быть так:

password1 = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'password'}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы