2016-06-28 100 views
3

是否可以創建一個將變量放在一行上的jinja2模板?像這樣的東西,而不是在結果中有兩行用逗號分隔。Jinja2模板變量爲一行

模板:

{% for host in groups['tag_Function_logdb'] %} 
elasticsearch_discovery_zen_ping_unicast_hosts = {{ host }}:9300 
{% endfor %} 

結果:

elasticsearch_discovery_zen_ping_unicast_hosts = 1.1.1.1:9300 
elasticsearch_discovery_zen_ping_unicast_hosts = 2.2.2.2:9300 

期望的結果:

elasticsearch_discovery_zen_ping_unicast_hosts = 1.1.1.1:9300,2.2.2.2:9300 

編輯,這個工程:

elasticsearch_discovery_zen_ping_unicast_hosts = {% for host in groups['tag_Function_logdb'] %} 
{{ host }}:9300 
{%- if loop.first %},{% endif %} 
{% endfor %} 
+1

的可能的複製[逗號如何輸出分隔在神社蟒蛇模板列表?(http://stackoverflow.com/questions/11974318/how-to-output-a-comma-delimited-list- in-jinja-python-template) – nelsonda

回答

1

我能夠把我圈之前想要的指令,然後使用loop.first-得到這個工作空格控件正確地格式化逗號分隔列表。

elasticsearch_discovery_zen_ping_unicast_hosts = {% for host in groups['tag_Function_logdb'] %} 
{{ host }}:9300 
{%- if loop.first %},{% endif %} 
{% endfor %} 
0

這裏是你如何能做到這一點:

elasticsearch_discovery_zen_ping_unicast_hosts =   

{% for host in groups['tag_Function_logdb'] %} 

    {{ host }}:9300 

    {% if not groups['tag_Function_logdb'].last %} 
, 
    {% endif %} 

{% endfor %} 
+0

謝謝,取得了一些進展。 'elasticsearch_discovery_zen_ping_unicast_hosts =  '沒有被填充,而只是顯示爲文本。不知怎的,這是否應該成爲循環的一部分? – tweeks200

1

這是爲我工作的解決方案。我發現tweeks200的解決方案僅適用於2個循環。無論循環次數如何,這都可以工作。感謝大家在這裏尋求幫助。

``` 
elasticsearch_discovery_zen_ping_unicast_hosts={% for host in groups['tag_Function_logdb'] %} 
{{ host }}:9300 
{%- if not loop.last %},{% endif %} 
{% endfor %} 
```