2017-06-22 13 views
0

は、私はこれを行うには、次のテンプレート「base.html」Jinja2でブロック名に変数名を使用しますか?

{% set list_of_ids = ['id1', 'id2', 'id3'] %} 
{% for id in list_of_ids %} 
    <div class="content"> 
    {% block id %} 
    {% endblock %} 
    </div> 
{% endfor %} 

ことが可能ですがあり、別のテンプレート「id1.html」

{% extends "base.html" %} 

{% block id1 %} 
    <p>This is my content for id1 block! Different from id2 and id3 blocks</p> 
{% endblock %} 
+0

あなたはこれをしたいと思う理由を与えることができますか? –

+0

私はこれを行う理由が全くないとは思わない。 –

+0

私たちは、タブのリストをセットアップファイルに渡してナビゲーションバーとタブを動的に生成できるスケルトンフラスコアプリケーションを持っています。それが不可能な場合は、各タブごとに同じテンプレートコードを書くことができます。ちょうど繰り返されるセットアップを最小限に抑えようとしていました。 –

答えて

0

にこれは不可能です。ブロック名はすでに名前であり、変数から名前を割り当てることはできません。

includeは、変数を取ることができます。解決策は、テンプレート内のブロックではなく、異なるテンプレート名を含めてテンプレート自体を定義することです。

base.html

{% for id in ids %} 
    {% include 'id' ~ id ~ '.html' %} 
{% endfor %} 

id1.html

<p>id1 content</p> 
関連する問題