Jinja2使用字典值字典的格式化模板

我将以下内容作为我的jinja模板的输入:

{'run_test': {'NS': [], 'SS': [' Create']}, 'pre_test': {'MS': [], 'FI': [' Create'], 'FS': [' Create', ' size=10']}}

在这里,我有一个包含2个键的字典: 1.运行测试 2.预测试

我已经编写了一个脚本,希望在其中填充这些键的值。 每个键的值是一个字典。该词典包含Key2和值作为列表。 我想在我使用key2文本的脚本中生成一个import语句。 例: 这里的预期输出是:

from blabla import NS, SS, MS, FI, FS

请注意,此处NS,SS,MS,FI和FS是key2值。 另外,我面临的问题是附加逗号。在字符串的末尾,我不想添加逗号。 我当前的代码是:

from blabla import {% for key, val in content.items() -%}
{%- for obj in val -%}
  {%- if loop.last -%}
    {{ obj }}
  {%- else -%}
    {{ obj }},
   {%- endif -%}
   {%- endfor -%}
{%- endfor %}

它返回的输出是:

from blabla import NS
,SSMF
,FI,FS

有人可以帮我获得所需格式的期望输出。

评论
  • 衮开、
    衮开、 回复

    这对我有用:

    from blabla import {% for key, val in content.items() -%}
    {% set outer_loop = loop %}
    {%- for obj in val -%}
      {%- if loop.last and outer_loop.last -%}
        {{ obj }}
      {%- else -%}
        {{ obj }},<span> </span>
       {%- endif -%}
       {%- endfor -%}
    {%- endfor %}
    

    Whitespace outside of tags in HTML is generally ignored, so the <span> tags help insert the space after each comma. You also only want to skip the comma on the last element of inner loop in the last iteration of the outer loop. Creating the variable outer_loop allows you to do that.