2016-06-28 74 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 %} 
```