我正在尝试根据this tutorial自定义表单模板。据我了解,render()
只是为标记添加了一些属性。例如,我添加placeholder = "abc"
并且效果很好。
{% call inserttourbus(id = "formAddNewRow" ) %}
<div class="fieldWrapper">
{% if inserttourbus['bustype'].label() %}Bus Type{% endif %}
{{ inserttourbus['bustype'].render(placeholder="abc")|safe }}
{% if inserttourbus['bustype'].errors() %}Not filled yet!{% endif %}
</div>
{% endcall %}
这是我的问题:
- 我使用bootstrap typeahead
作为我的模板,因此我需要将以下属性添加到inserttourbus
文本框
data-provide="typeahead" data-items="4" data-source='["Alabama","Alaska"]'
所以它会变成
{{ inserttourbus['bustype'].render(placeholder="abc", data-provide="typeahead", data-items="4", data-source='["Alabama","Alaska"]')|safe }}
但jinja2引擎似乎不接受data-provide
,data-items
,依此类推,因为它包含"-"
个字符。如果我将data-provide
更改为dataprovide
,则jinja2引擎可以很好地呈现代码。
但是,在bootstrap typeahead
javascript中,所有变量都定义为data-provide
,data-items
。如果我将它们更改为dataprovide
,dataitems
,则javascipt将停止工作。
请给我一个解决方案: - 如何使jinja2接受具有“ - ”的属性 - 其他解决方案,建议
答案 0 :(得分:9)
在Flask中查看this snippet这样做。我想它对于Django来说会有同样的效果;在ad-hoc字典中使用无效的Jinja2(Python)语法传递HTML属性:
{{ inserttourbus['bustype'].render(placeholder="abc",
**{'data-provide':'typeahead',
'data-items':'4',
'data-source':'["Alabama","Alaska"]'}) }}
答案 1 :(得分:1)
连字符用作Python中的减法运算符。所以不要在名字中使用它。你可以在字符串中使用它。