如何在django auth登录表单中添加类属性?

时间:2018-02-15 19:03:03

标签: django python-3.x authentication

我刚刚安装了Django的默认身份验证应用。它正在工作,但是我很喜欢,我怎么能改变表格的CSS。

说我有这个:

<form ...>
    <input type = "text" class = "input-class" placeholder = "user">
    <input type="submit" value="login" />
</form>

将在文本输入中的类后面显示一个漂亮的表单。

然后,我有Django auth的简单丑陋的 login.html 模板:

<form method="post" action="{% url 'login' %}">
{% csrf_token %}

<div>
   <td>{{ form.username.label_tag }}</td>
   <td>{{ form.username }}</td>
</div>

我想要做的是获得第一个带有第一个css类的表单。

有没有办法这样做而不会弄乱模型和表格? 而且,如果没有,有人可以给我指路吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

我希望有一种简单的方法可以做到这一点,而不会弄乱表单或安装第三方应用程序。但不幸的是,事实并非如此。

如果您不想安装任何应用,可以扩展AuthenticationForm

class PrettyAuthenticationForm(AuthenticationForm):
    class Meta:
        widgets = {
            'username': forms.TextInput(attrs={'class': 'input-class'})
        }

然后,如果您使用的是LoginView,请使用PrettyAuthenticationForm参数传递新的authentication_form(有关详细信息,请参阅链接)。

但我不知道这是否值得所有麻烦。我已经完成了几次,但通常我更喜欢安装django-widget-tweaksdjango-crispy-forms

如果你只需要在这里和那里添加一些css类,并且你使用的是自定义css集,我建议使用 django-widget-tweaks

如果您有多个表单,并且您正在使用一些CSS框架,如Bootstrap或Foundation,我建议使用 django-crispy-forms

使用 django-widget-tweaks 的示例,首先安装它:

pip install django-widget-tweaks

添加 settings.py

INSTALLED_APPS = [
    # ...

    'widget_tweaks',
]

在模板中,将其加载到文件顶部:

{% load widget_tweaks %}

然后在你的领域使用它:

{{ form.username|add_class:'input-class' }}