Форма входа в 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, чтобы оно первым нашло мой новый шаблон.

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