2013-10-04 3 views
2

У меня есть объект вроде этого:условный цикл в питона усов

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

, которая, к сожалению, иногда:

{ "Items" : [],} 

В Усы JavaScript, я могу условно вынести Items 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.

Смежные вопросы