2013-10-04 302 views
2

我有一个这样的对象:条件循环

{ "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

一个可能的解决方法(通过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) 

>>> 
0

您还可以使用

{{#Items.__len__()}} 
{{/Items.__len__()}} 

您正在使用的JavaScript示例长度相同的方式。