2013-01-22 35 views
2

我試圖自定義基於this tutorial的表單模板。據我所知,render()只是給標籤添加一些屬性。例如,我添加placeholder = "abc",它運作良好。jinja2表單渲染不允許包含「 - 」的屬性

{% 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。如果我將它們更改爲dataprovidedataitems,則javascipt停止工作。

請給我一個解決方案: - 如何使接受的Jinja2具有屬性「 - 」 - 其他的解決方案,建議

回答

1

一個連字符作爲在Python減法運算符。所以不要使用它的名字。你可以在字符串中使用它。

+0

thanks。無論如何添加數據提供render()? – John

+0

也許你可以插入一個unicode破折號:''N {HYPHEN-MINUS}' – voscausa

+0

我改變數據提供給數據u'\ N {HYPHEN-MINUS}'提供,但它不起作用 – John

9

退房this snippet在Flask中這樣做。我想這對Django來說也是一樣的。在ad-hoc字典中傳遞帶有無效Jinja2(Python)語法的HTML屬性:

{{ inserttourbus['bustype'].render(placeholder="abc", 
     **{'data-provide':'typeahead', 
      'data-items':'4', 
      'data-source':'["Alabama","Alaska"]'}) }} 
+0

節省我的一天。謝謝! – swdev