我刚刚安装了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类的表单。
有没有办法这样做而不会弄乱模型和表格? 而且,如果没有,有人可以给我指路吗?
非常感谢
答案 0 :(得分:2)
我希望有一种简单的方法可以做到这一点,而不会弄乱表单或安装第三方应用程序。但不幸的是,事实并非如此。
如果您不想安装任何应用,可以扩展AuthenticationForm
:
class PrettyAuthenticationForm(AuthenticationForm):
class Meta:
widgets = {
'username': forms.TextInput(attrs={'class': 'input-class'})
}
然后,如果您使用的是LoginView
,请使用PrettyAuthenticationForm
参数传递新的authentication_form
(有关详细信息,请参阅链接)。
但我不知道这是否值得所有麻烦。我已经完成了几次,但通常我更喜欢安装django-widget-tweaks或django-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' }}