TypeError: __init__() получила неожиданный аргумент ключевого слова 'widgets'
я получаю ошибку, когда пишу forms.py
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm, UsernameField
class SignupForm(UserCreationForm):
password1= forms.CharField(label='password',widget=forms.PasswordInput(attrs={'class':'form-control'}))
password2= forms.CharField(label='Confirm password(again)',widget=forms.PasswordInput(attrs={'class':'form-control'}))
сервер говорит
username= UsernameField(label='username',widgets=forms.TextInput(attrs={'autofocus':True,'class':'form-control bg-success'}))
File "C:\Users\ITS\AppData\Local\Programs\Python\Python39\lib\site-packages\django\forms\fields.py", line 216, in __init__
super().__init__(**kwargs)
TypeError: __init__() got an unexpected keyword argument 'widgets'
но когда я пишу виджеты в мета-классе
class LoginForm(AuthenticationForm):
username= UsernameField(label='username')
password= forms.CharField(label=('password'),strip=False)
class Meta:
widgets={
'username':forms.TextInput(attrs={'autofocus':True,'class':'form-control'}),
'password':forms.PasswordInput(attrs={'autocomplete':'current-password','class':'form-control'}),
}
сервер полностью работает, но класс управления формой не отображается на html странице.
tml код находится здесь
{% extends 'base.html' %}
{% block content %}
<div class="col-sm-10">
<h3 class="text-white my-5"> Login Page</h3>
<form action="" method="post" novalidate>
{% csrf_token %}
{% for fm in form %}
<div class="">
{{fm.label_tag}}{{fm}}<small class="text-warning">{{fm.errors| striptags}}</small>
</div>
{% endfor %}<br>
<input type="submit" class=" btn btn-primary" value="Login">
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}<br>
<p class="alert alert-danger my-3">{{ error}}</p>
{% endfor %}
{% endif %}
</form>
</div>
{% endblock %}
помогите мне с этим, пожалуйста, и заранее спасибо.
похоже, что по ошибке вы используете виджеты вместо виджета в форме попробуйте следующие изменения :-
username= UsernameField(label='username', widget=forms.TextInput(attrs={'autofocus':True,'class':'form-control bg-success'}))
Это определено здесь :- https://github.com/django/django/blob/main/django/contrib/auth/forms.py#L66