2016-07-05 63 views
0

我們正試圖想出一種在jinja2中使用事實的方法For循環。Jinja2中的變量For循環

例如,我想要獲取屬於我的memcached組的所有服務器以及基於發佈的組(如tag_release_devtag_release_prod)。當我嘗試在For循環中使用{{ tt_release }}時,它將評估{{ tt_release }}而不是變量的值。有沒有辦法在循環定義中使用變量?

{% for host in groups["tag_function_mem"] | intersect(groups["tag_release_{{ tt_release }}"]) %} 
    {{ host }}:11211 
    {%- if not loop.last %},{% endif %} 
    {%- if loop.last %}"{% endif %} 
    {% endfor %} 
{% endif %} 

回答

2

它評估{{ tt_release }}而不是變量的值。

這是因爲你已經在表達式中。你不能嵌套表達式 - 而且你不需要。

你想要的是連接字符串"tag_release_"和變量tt_release。在Jinja2中,連接使用+完成。

{% for host in groups["tag_function_mem"] | intersect(groups["tag_release_" + tt_release]) %} 
+0

太好了,謝謝你的解釋! – tweeks200