Jinja - 用字典递归循环缩进

时间:2014-03-13 22:51:37

标签: python templates jinja2

我试图用忍者写一个模板。但我无法显示正确的缩进!我尝试了很多东西,但是我无法获得预期的结果。 我有这样的字典:

videoNode = {'type': "VideoLoader",
            'config': {'type': "url",
                       'source': "blabla",
                       'frameBufferSize': 50,
                      }
            }

我想展示类似的东西

queueVideo1:
    type: VideoLoader
    config:
        source: blabla
        type: url
        frameBufferSize: 50

但我能得到的只有:

queueVideo1:
    type: VideoLoader
config:
   source: blabla
type: url
frameBufferSize: 50

这是我的档案:

{%- for key, value in videoNodes.iteritems() recursive -%}
    {%+ if value is mapping -%}
        {{ key }}:
        {{ loop(value.iteritems()) }}
    {%- else -%}
       {{ key }}: {{value}}
    {% endif %}
{%- endfor -%}

2 个答案:

答案 0 :(得分:3)

您必须尝试使用​​缩进功能并指定一个取决于缩进级别的值:

{{ key|indent(2, true) }}

您可以看到the documentation here

答案 1 :(得分:0)

我发现使用多个缩进过滤器以保持yaml文件缩进清晰很有帮助。否则,这有点令人困惑:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ name }}
  namespace: {{ namespace }}
data:
{% filter indent(2) %}
customResourceDefinitions: |-
  {% filter indent(2) %}
    {%- for crd in crds -%}
    - {{ crd.content|indent(2) }}
    {%- endfor -%}
  {% endfilter %}