Jinja2模板:如何跳过数组元素的name键并调整循环输出格式?
Jinja2模板修正方案
原始变量结构
foo: - name: name-1 var1_1: xxx var1_2: yyy var1_N: NNN - name: name-2 var2_1: xxx var2_2: yyy var2_N: NNN
目标输出格式
- name: 'name-1' configs: - var1_1: xxx var1_2: yyy var1_N: NNN - name: 'name-2' configs: - var2_1: xxx var2_2: yyy var2_N: NNN
当前模板的问题
- 内层循环会为每个键值对单独生成一个
-开头的条目,不符合目标格式要求 - 未过滤
name键,导致该键会被错误输出到configs区域
修正后的Jinja2模板
{% for item in foo %} - name: '{{ item.name }}' configs: - {% for key, value in item.items() if key != 'name' %} {{ key }}: {{ value }} {% endfor %} {% endfor %}
关键调整说明
- 在内层循环添加
if key != 'name'条件,直接过滤掉name键,确保它只出现在外层的name字段中 - 将所有非
name的键值对放在同一个-条目下,内层循环仅负责输出键值对内容,不会重复生成-,实现目标格式的结构
内容的提问来源于stack exchange,提问作者iOleg
相关产品推荐
相关产品推荐

