首页 文章

Jinja2模板变量为一行

提问于
浏览
5

是否可以创建一个将变量放在一行上的jinja2模板?像这样的东西,但结果中不是有两行,而是用逗号分隔 .

Template:

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

Results:

elasticsearch_discovery_zen_ping_unicast_hosts = 1.1.1.1:9300
elasticsearch_discovery_zen_ping_unicast_hosts = 2.2.2.2:9300

Desired Results:

elasticsearch_discovery_zen_ping_unicast_hosts = 1.1.1.1:9300,2.2.2.2:9300

Edit, this works:

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

3 回答

  • 1

    这是适合我的解决方案 . 我发现tweeks200的解决方案仅适用于2个循环 . 无论循环次数如何,这都有效 . 感谢大家的帮助 .

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

  • 2

    我能够通过在循环之前放置我想要的指令然后使用 loop.first- 空格控件来正确地格式化逗号分隔列表来实现此功能 .

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

    这是你如何做到的:

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

相关问题