[英]How to add CSS class to widget/field with Django 1.11 template-based form rendering
[英]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.