我如何在Jinja2的一行上打印一条字典



我有变量fruits

fruits = {
  "apple": {},
  "banana": {
    "params": {
      "color": "yellow",
      "size" 100
    }
  }
}

..和jinja2模板my_stuff.j2

In my bag I have:
{% for k,v in fruits.iteritems() %}
- {{ k }}
{% endfor %}

当我渲染它时,我会得到:

In my bag I have:
- apple
- banana

问题:如何达到此信息:

In my bag I have:
- apple
- banana color="yellow" size="100"

在Python中,您可以这样做:

for key,val in fruits.iteritems():
    if val.get('params'):
        print key + ' ' + str(' '.join('{}={}'.format(param_key, param_val) for param_key, param_val in val['params'].items()))
    else:
        print key

,在Jinja中,您可以做这样的事情:

{%for key,val in something.iteritems()%}
    {%if val.get('params')%}
        - {{key}} {%for item in val['params'].items()%} {{item | join ('=') }} {%endfor%}
    {%else%}
        - {{key}}
    {%endif%}
{%endfor%}

最新更新