2

我正在尝试根据本教程自定义表单模板。据我了解,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-providedataprovidejinja2 引擎可以很好地渲染代码。

但是,在bootstrap typeaheadjavascript 中,所有变量都定义为data-provide, data-items。如果我将它们更改为dataprovide, dataitems,javascipt 将停止工作。

请给我一个解决方案: - 如何让 jinja2 接受具有“-”的属性 - 其他解决方案,建议

4

2 回答 2

9

查看此代码段以在 Flask 中执行此操作。我想它对 Django 也是一样的。在临时字典中使用无效的 Jinja2 (Python) 语法传递 HTML 属性:

{{ inserttourbus['bustype'].render(placeholder="abc", 
       **{'data-provide':'typeahead',
          'data-items':'4',
          'data-source':'["Alabama","Alaska"]'}) }}
于 2013-02-14T19:18:40.333 回答
1

连字符用作 Python 中的减法运算符。所以不要在名字中使用它。您当然可以在字符串中使用它。

于 2013-01-22T03:15:59.267 回答