簡體   English   中英

將 CSS 添加到 django 模板中的表單字段

[英]Add CSS to form field in django template

我想在 django 表單上使用引導程序。 為此,我需要向每個字段添加.form-control類。 我的解決方法是:

def __init__(self, *args, **kwargs):
    super(SomeForm, self).__init__(*args, **kwargs)
    for field in self.fields:
        self.fields[field].widget.attrs = {
            'class': 'form-control'
        }
{% for field in form %}
    <div class="form-group">
        {{ field.label_tag }}
        {{ field }}
    </div>
{% endfor %}

但我認為將 CSS 放在 python 代碼中是錯誤的(如果我想使用另一個 CSS 框架,我將不得不更改表單類)。 如何將類移動到模板? 我不想使用脆皮而不是引導程序。

您可以使用自定義模板標簽來添加類,請在此處查看更多信息

您必須在 templatetags 目錄中創建一個新模塊:

myapp/
    __init__.py
    models.py
    templatetags/
        __init__.py
        extra_filters.py <-- Name it as you prefer
    views.py
    forms.py

extra_filters.py 模塊的內容可以是這樣的:

from django import template

register = template.Library()


@register.filter(name='addclass')
def addclass(field, myclass):
    return field.as_widget(attrs={"class": myclass})

現在在您的模板中,加載新過濾器並按如下方式使用它:

{% load extra_filters %}

{% for field in form %}
    <div class="form-group">
        {{ field.label_tag }}
        {{ field|addclass:"form-control" }}
    </div>
{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM