2017-04-22 23 views
1

我有可變fruits如何在jinja2的單行上打印字典?

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" 
+0

建一個for循環遍歷'v.iteritems() '並按照你想要的方式格式化它?也可以用'-'來後綴/前綴控制語句,以阻止空格在它們之前/之後被渲染,即'{{ - ... - }}'和'{% - ... - %}'。 – metatoaster

回答

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