如何在Django中自动将class属性添加到所有表单小部件中?

时间:2019-09-10 13:56:14

标签: python css django forms

我希望每次使用django创建表单时,标签输入都包含特定的CSS类(form-control),为此,我必须在form.py中编写以下代码,为每个字段添加行:

class InsertItem(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['name'].widget.attrs.update({'class': 'form-control'})
        self.fields['price'].widget.attrs.update({'class': 'form-control'})

是否有一种方法可以强制Django以每种形式包含我需要的css类,而不必为每一行写东西呢?

2 个答案:

答案 0 :(得分:1)

编写一个通用的基类来更新每个字段:

class StylishForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs.update({'class': 'form-control'})

并从中继承:

class InsertItem(StylishForm):
   ...

答案 1 :(得分:0)

我正在使用django-widget-tweaks应用程序添加类属性。

  1. install应用程序
  2. form创建modelForm
class InsertItem(forms.ModelForm):
    class Meta:
        model = modelName
  1. 在模板代码中使用应用程序
{% load widget_tweaks %}

<form method="post">
{% csrf_token %}
{% for field in form %}
    {% render_field field class="form-control" %}
{% endfor %}
</form>

{% load widget_tweaks %}:加载应用程序以使用它

{% render_field:命令
field:要添加类的字段名称
class="form-control" %}:属性