python胡子中的条件循环

时间:2013-10-04 01:40:15

标签: python mustache

我有一个这样的对象:

{ "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实现中似乎没有这些选项。

有没有人知道解决方法?

2 个答案:

答案 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的方式相同。