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、、などを受け入れないようです。に変更した場合、jinja2 エンジンはコードを適切にレンダリングできます。data-items"-"data-providedataprovide

ただし、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 に答える