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

Вернуться на верх