2

我有一个这样的对象:

{ "Items" : [ "One", "Two", "Three" ],}

可悲的是,有时:

{ "Items" : [],}

在 Javascript 的 Mustache 中,我可以有条件地以 2 种方式呈现项目:

{{#Items.length}}
   <ul>
   {{#Items}}
      <li>{{.}}></li>
   {{^Items}}
   </ul>
{{/Items.length}}

{{#Items.0}}
   <ul>
   {{#Items}}
      <li>{{.}}></li>
   {{^Items}}
   </ul>
{{/Items.0}}

这些选项在 Python 实现中似乎都不可用。

有谁知道解决方法?

4

2 回答 2

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)

>>> 
于 2013-10-04T06:51:52.150 回答
0

你也可以使用

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

与您在 Javascript 示例中使用长度的方式相同。

于 2017-02-20T09:48:04.810 回答