我正在尝试覆盖Crispy Forms 1.7.0中的标签的默认模板。作为第一步,我尝试将相关模板(templates/bootstrap3/layout/tab-link.html)从crispy表单模板复制到我的应用程序模板目录(myapp / templates / crispy_overrides / tab-link.html),但是当我关闭时它停止正确呈现标签我试图在布局中使用模板。
以下是我的表单布局对象和模板的相关部分。如果我注释掉template=...
行,那么一切正常。
我做错了吗?
TabHolder(
Tab('D.DDD°',
'latitude',
'longitude',
template='crispy_overrides/tab-link.html',
),
Tab(
'DD°, DD.DD\'',
'lat_dmm_d',
'lat_dmm_m',
'lon_dmm_d',
'lon_dmm_m',
template='crispy_overrides/tab-link.html',
),
Tab(
'DD°, DD\', SS.SS\'\'',
'lat_dms_d',
'lat_dms_m',
'lat_dms_s',
'lon_dms_d',
'lon_dms_m',
'lon_dms_s',
template='crispy_overrides/tab-link.html',
),
Tab('UTM',
'utm_zone',
'utmx',
'utmy',
template='crispy_overrides/tab-link.html'
),
),
tab-link.html
<li class="tab-pane{% if 'active' in link.css_class %} active{% endif %}"><a href="#{{ link.css_id }}" data-toggle="tab">{{ link.name|capfirst }}{% if tab.errors %}!{% endif %}</a></li>
答案 0 :(得分:0)
当然我在发布问题之后就知道了。 叹息
显然,对于Tab对象,您需要覆盖link_template
而不是template
。看起来这可能是一个错误。
布局类的相关部分:
class Tab(Container):
"""
Tab object. It wraps fields in a div whose default class is "tab-pane" and
takes a name as first argument. Example::
Tab('tab_name', 'form_field_1', 'form_field_2', 'form_field_3')
"""
css_class = 'tab-pane'
link_template = '%s/layout/tab-link.html' # Notice how it isn't 'template'
def render_link(self, template_pack=TEMPLATE_PACK, **kwargs):
"""
Render the link for the tab-pane. It must be called after render so css_class is updated
with active if needed.
"""
link_template = self.link_template % template_pack
return render_to_string(link_template, {'link': self})