2013-10-04 188 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示例長度相同的方式。