jinja2表单渲染不允许包含" - "的属性

Joh*_*ohn 2 google-app-engine django-forms jinja2

我正在尝试根据本教程自定义表单模板.据我所知,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 %}
Run Code Online (Sandbox Code Playgroud)

这是我的问题: - 我bootstrap typeahead用于我的模板,所以我需要将以下属性添加到inserttourbus文本框中

data-provide="typeahead" data-items="4" data-source='["Alabama","Alaska"]'
Run Code Online (Sandbox Code Playgroud)

所以它会成为

{{ inserttourbus['bustype'].render(placeholder="abc", data-provide="typeahead", data-items="4", data-source='["Alabama","Alaska"]')|safe }}
Run Code Online (Sandbox Code Playgroud)

但发动机的Jinja2似乎不接受data-provide,data-items,等等,因为它包含"-"的字符.如果我换data-providedataprovide,该发动机的Jinja2可以使代码很好.

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

请给我一个解决方案: - 如何使jinja2接受属性" - " - 其他解决方案,建议

Jos*_*ein 9

查看此片段在Flask中执行此操作.我想它对于Django来说会有同样的效果; 在ad-hoc字典中使用无效的Jinja2(Python)语法传递HTML属性:

{{ inserttourbus['bustype'].render(placeholder="abc", 
       **{'data-provide':'typeahead',
          'data-items':'4',
          'data-source':'["Alabama","Alaska"]'}) }}
Run Code Online (Sandbox Code Playgroud)