自定义 Django 表单样式

Customize Django Form Style

如何自定义 Django 表单并为它们设置 class?例如,我有一个带有 bootstrap class 和自定义字体的文本框:

<input type="text" class="form-control myfont" value="{{ model1.field1 }}"/>

但原始表单字段“{{ form1.form_field1 }}”是一个没有样式的简单文本框。我尝试使用此代码:

<input type="text" class="form-control myfont" value="{{ form1.form_field1 }}"/>

此代码无效。你有什么建议吗??

您可以在表单的 __init__ 方法中向小部件添加额外的属性。如果你有很多这样的表格,那么你可以有一个超级 class 表格:

class BootstrapForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(BootstrapForm, self).__init__(*args, **kwargs)
        for field_name in self.fields:
            field = self.fields.get(field_name)
            if field:
                field.widget.attrs.update({
                    'class': "form-control myfont"
                })

然后让您的其他表单扩展此表单。

如果你想以最小的阻力注入额外的属性,你可以使用 django-tweaks。

安装

 $ pip install django-widget-tweaks

然后在INSTALLED_APPS中添加‘widget_tweaks’。

https://pypi.python.org/pypi/django-widget-tweaks

template.html

{% load widget_tweaks %}
{% render_field form1.form_field1 class="form-control myfont" %}