2017-06-22 144 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>