python mustache中的条件循环

python mustache中的条件循环,python,mustache,Python,Mustache,我有一个这样的物体: { "Items" : [ "One", "Two", "Three" ],} 不幸的是,有时: { "Items" : [],} 在Javascript的小胡子中,我可以有条件地以2种方式呈现项目: {{#Items.length}} <ul> {{#Items}} <li>{{.}}></li> {{^Items}} </ul> {{/Items.length}} {{#It

我有一个这样的物体:

{ "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}}
{{{#Items.length}
    {{{#项目}
  • {{}}>
  • {{^Items}
{{/Items.length} {{{#Items.0}
    {{{#项目}
  • {{}}>
  • {{^Items}
{{/Items.0}
这两个选项在Python实现中似乎都不可用

有人知道解决方法吗?

一种可能的解决方法(将
bool(obj['Items'])
传递到
render
):

导入pystache >>>tmpl=''{{#has_item} ...
    ... {{{#项目} ...
  • {.}
  • ... {{/Items} ...
... {{/has_item}}'' >>>obj={“项”:[“一”、“二”、“三”]} >>>print pystache.render(tmpl,has_item=bool(obj['Items']),**obj)
  • 一个
  • 两个
>>>obj={“项目”:[]} >>>print pystache.render(tmpl,has_item=bool(obj['Items']),**obj) >>> 您也可以使用

{{#Items.__len__()}}
{{/Items.__len__()}}
与Javascript示例中使用长度的方式相同

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