自定义Django表单样式

时间:2015-12-18 15:02:21

标签: css django django-forms

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

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

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

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

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

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用表单的__init__方法向窗口小部件添加额外的属性。如果你有很多这样的形式,那么你可以有一个超类形式:

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"
                })

然后让你的其他形式扩展这个。

答案 1 :(得分:2)

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

安装

 $ pip install django-widget-tweaks

然后将'widget_tweaks'添加到INSTALLED_APPS。

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

template.html

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