Не отображается Placeholder в поле Input, django
В полях username, firstname, email - placeholder отражается а в полях password1 и password2 нет. В чем может быть проблема?
forms.py
class UserRegistrationForm(UserCreationForm):
def clean_email(self):
email = self.cleaned_data.get('email', '')
if User.objects.filter(email=email).exists():
raise forms.ValidationError('Пользователь с таким e-mail уже зарегистрирован')
return email
def clean_password2(self):
cd = self.cleaned_data
if cd['password1'] != cd['password2']:
raise forms.ValidationError('Пароли не совпадают')
return cd['password2']
class Meta:
model = User
fields = ('username', 'first_name', 'email', 'password1', 'password2')
widgets = {
'username': forms.TextInput(attrs={'placeholder': 'Логин'}),
'first_name': forms.TextInput(attrs={'placeholder': 'Имя пользователя'}),
'email': forms.TextInput(attrs={'placeholder': 'Электронная почта'}),
'password1': forms.TextInput(attrs={'placeholder': 'Введите пароль'}),
'password2': forms.TextInput(attrs={'placeholder': 'Повторите пароль'}),
}
views.py
def signup(request):
if request.method == 'POST':
user_form = UserRegistrationForm(request.POST)
if user_form.is_valid():
new_user = user_form.save(commit=False)
new_user.set_password(user_form.cleaned_data['password'])
new_user.save()
return render(request, 'reg_app/main.html')
else:
user_form = UserRegistrationForm()
return render(request, 'reg_app/signup.html', {'user_form': user_form})
form.html
<body>
<div id="background-login"></div>
<div class="center">
<form class="signup" method="post">
<a href="{% url 'main' %}"><img class="close" src="{% static 'reg_app/img/close.png' %}" alt=""></a>
<div class="center">
{% csrf_token %}
<h4 class="visually-hidden">РЕГИСТРАЦИЯ</h4>
<div class="illustration">
<img class="png" src="{% static 'reg_app/img/login3.png' %}">
</div>
<div class="mb-3">{{ user_form }}</div>
<div class="mb-3"><button class="btn1" type="submit">Зарегистрироваться</button></div>
</div>
</form>
</div>
Решение найдено. Нужно в функцию добавить следующий код:
from django.utils.translation import gettext, gettext_lazy as _
class UserRegistrationForm(UserCreationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['username'].widget.attrs.update({'placeholder': _('Логин')})
self.fields['first_name'].widget.attrs.update({'placeholder': _('Имя пользователя')})
self.fields['email'].widget.attrs.update({'placeholder': _('Электроная почта')})
self.fields['password1'].widget.attrs.update({'placeholder': _('Введите пароль')})
self.fields['password2'].widget.attrs.update({'placeholder': _('Повторите пароль')})
class Meta:
model = User
fields = ('username', 'first_name', 'email', 'password1', 'password2')```