我有一个这样的对象:
{ "Items" : [ "One", "Two", "Three" ],}
遗憾的是,有时会这样:
{ "Items" : [],}
在Javascript的胡子中,我可以有条件地渲染项目2:
{{#Items.length}}
<ul>
{{#Items}}
<li>{{.}}></li>
{{^Items}}
</ul>
{{/Items.length}}
{{#Items.0}}
<ul>
{{#Items}}
<li>{{.}}></li>
{{^Items}}
</ul>
{{/Items.0}}
Python实现中似乎没有这些选项。
有没有人知道解决方法?
答案 0 :(得分:0)
一种可能的解决方法(将bool(obj['Items'])
传递给render
):
>>> import pystache
>>> tmpl = '''{{#has_item}}
... <ul>
... {{#Items}}
... <li>{{.}}</li>
... {{/Items}}
... </ul>
... {{/has_item}}'''
>>> obj = {"Items": [ "One", "Two", "Three" ]}
>>> print pystache.render(tmpl, has_item=bool(obj['Items']), **obj)
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
>>> obj = {"Items": []}
>>> print pystache.render(tmpl, has_item=bool(obj['Items']), **obj)
>>>
答案 1 :(得分:0)
您也可以使用
{{#Items.__len__()}}
{{/Items.__len__()}}
与在Javascript示例中使用length的方式相同。