【问题标题】:How do I print a dictionary on a single line in jinja2?如何在 jinja2 中单行打印字典?
【发布时间】:2017-04-22 10:26:06
【问题描述】:

我有变量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"

【问题讨论】:

  • 构建另一个循环 v.iteritems() 并按照您想要的方式对其进行格式化?还为控制语句添加后缀/前缀- 以阻止在它们之前/之后呈现空格,即{{- ... -}}{%- ... -%}

标签: python python-2.7 jinja2


【解决方案1】:

在 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%}

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 2013-03-25
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2016-11-11
    • 2019-11-22
    相关资源
    最近更新 更多