Я не вижу проблемы в вашем коде, но сейчас не могу ее протестировать.
Вы можете попробовать добавить виджет следующим образом, чтобы увидеть, работает ли он:
class SignUpForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2',)
widgets = {'username': TextInput(attrs={'class':'form-control'}),
'first_name': TextInput(attrs={'class':'form-control'}),
'last_name': TextInput(attrs={'class':'form-control'}),
'email': TextInput(attrs={'class':'form-control'})
}
def __init__(self, *args, **kwargs):
super(SignUpForm, self).__init__(*args, **kwargs)
self.fields['password1'].widget = PasswordInput(attrs={'class': 'form-control'})
self.fields['password2'].widget = PasswordInput(attrs={'class': 'form-control'})
Другой вариант будет использовать django -widget-tweaks: https://github.com/jazzband/django-widget-tweaks
При этом вы можете добавлять классы в свой шаблон. Но вы также можете добавить другие атрибуты.
Например:
{% load widget_tweaks %}
{{ form.password1|add_class:"form-control" }}
{{ form.password2|add_class:"form-control" }}