首页 > 解决方案 > 无法使用 Bootstrap 设置 Django 默认登录表单的样式

问题描述

当我尝试在自定义 forms.py 文件中使用引导程序设置 Django 默认登录模板的样式时,它不起作用。没有错误,但我仍然看到默认的未设置样式的登录表单。

换句话说,LoginView 似乎根本没有使用 AuthenticationForm。

登录.html

<body>
<h2>Login</h2>
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Login</button>
</form>
</body>
</html>

表格.py

from django import forms
from django.contrib.auth.forms import AuthenticationForm

class LoginForm(AuthenticationForm):
    username = forms.CharField(widget=forms.TextInput(
        attrs={'class':'form-control'}))
    password = forms.CharField(widget=forms.PasswordInput(
        attrs={'class':'form-control'}))

网址.py

from django.contrib import admin
from django.urls import include
from django.urls import path

from django.contrib.auth.views import LoginView
from django.contrib.auth import views

from myProject.forms import LoginForm

urlpatterns = [

    path("admin/", admin.site.urls),
    path('accounts/login/', LoginView.as_view(),{'template_name':'registration/login.html','authentication_form':LoginForm}),
    path('login/', LoginView.as_view(template_name='registration/login.html'),{'authentication_form':LoginForm})

我已经尝试了几件事,包括对上面的“accounts/login/”和“login/”路径使用不同的语法,因为我认为这可能是我的问题,但没有任何区别。

我期望通过引导程序得到什么 我期望通过引导程序得到什么

我仍然得到什么 我仍然得到什么

我在 Docker 中运行它,所以每当我进行更改时,我都会这样做:

Docker compose down
Docker compose up

一旦服务器重新启动,我就会看到更改。

感谢期待。

标签: pythonhtmlcssdjangodocker

解决方案


尝试重写您的代码,如下所示:

表格.py

class LoginForm(AuthenticationForm):
    username = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))
    password = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control'}))

    def __init__(self, *args, **kwargs):
        super(LoginForm, self).__init__(*args, **kwargs)

网址.py ...

path('accounts/login/', LoginView.as_view('template_name':'registration/login.html','form_class':LoginForm}),
path('login/', LoginView.as_view('template_name':'registration/login.html','form_class':LoginForm}),

其余的似乎都很好。


推荐阅读