Форма входа в Django, стилизация с помощью Bootstrap ничего не дает
У меня есть некоторые проблемы с Django. Итак, я хотел использовать шаблон входа Bootstrap и использовать его в своем проекте. Итак, мне удалось сделать все правильно, за исключением полей имени пользователя и пароля, которые отображаются как обычные {{form.username}}
, несмотря на то, что я использовал класс form-control. Позвольте мне показать вам:
forms.py
from django import forms
from django.forms import TextInput, PasswordInput
class LogINFO(forms.Form):
username= forms.CharField(label= 'Usuario: ', max_length=20, widget=forms.TextInput(attrs={"placeholder": "Username", 'style': 'width: 300px;', "class": "form-control"}))
password=forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password', 'style': 'width: 300px;', 'class': 'form-control'}))
и мой login.html
{% csrf_token %}
<div class="form-floating">
{{form.username}}
</div>
<div class="form-floating">
{{form.password}}
</div>
Ну, видимо, он опускает все, и это просто отображается как обычный ввод формы. Я не использую модель, так как я использую приложение auth. Любая помощь будет оценена по достоинству!
Формы аутентификации, такие как вход в систему, имеют тенденцию отменять пользовательские настройки, если они не настроены особым образом.
Попробуйте следующее
urls.py
from django.contrib.auth import views
from .forms import LogINFO
....
path('login/',
views.LoginView.as_view(
template_name="registration/login.html", #this is default, change as needed
authentication_form=LogINFO,
),
name='login'
),
views.py
from django.contrib.auth.forms import AuthenticationForm,
class LogINFO(AuthenticationForm):
username= forms.CharField(label= 'Usuario: ', max_length=20, widget=forms.TextInput(attrs={"placeholder": "Username", 'style': 'width: 300px;', "class": "form-control"}))
password=forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password', 'style': 'width: 300px;', 'class': 'form-control'}))
def __init__(self, *args, **kwargs):
super(LogINFO, self).__init__(*args, **kwargs)
Ключевыми элементами являются:
- делая вашу форму подклассом класса AuthenticationForm (что имеет смысл, поскольку вы используете auth от Django)
- вызов функции super init (которая позволяет подклассу использовать все методы класса)
- и предоставление класса authentication_form в вашем файле URLs.py .
Последнее замечание: когда я переопределяю шаблон для другого приложения, например django.config.auth, я помещаю рассматриваемое приложение перед ним в settings.py INSTALLED_APPS, чтобы оно первым нашло мой новый шаблон.