2017-05-30 194 views
0

我努力了神社模板環路內的if聲明偷偷聲明神社:嵌套'如果「for」循環

</table> 
<class="container"> 
<table border ="1"> 
<caption> BBOXX <caption> 
<thead class="thead-inverse"> 
    <tr> 
     <th>CU Serial</th> 
     <th>System</th> 
     <th>Version</th> 
     <th>Enable Status</th> 
    </tr> 
     {% for d in client_data %} 
     <tr> 
      <td>{{ d["serial_number"]}} </td> 
      <td>{{ d["hardware_type"]}} </td> 
       {% if {{ d["current_enable_flag"]}} == TRUE %} 
        <td> {{ON}} </td> 
       {% else %} 
        <td> {{OFF}} </td> 
       {% endif %} 
     </tr> 
     {% endfor %} 
</table> 

誤差TemplateSyntaxError: expected token ':', got '}'

如果要這樣:是?

+0

我認爲你需要的':'if語句之後:'如果{{d [ 「current_enable_flag」]}} == TRUE:' – numbermaniac

+1

@numbermaniac:這是不是Python代碼,不需要使用':'。 –

+0

@MartijnPieters啊我的錯誤,從標籤我認爲「偷偷摸摸的陳述」一定是Python代碼。 – numbermaniac

回答

2

您的if語法錯誤。您不需要使用{{ ... }}插入一個變量,該變量僅用於插值模板輸出中的值。

使用

{% if d["current_enable_flag"] == TRUE %} 
    <td> {{ON}} </td> 
{% else %} 
    <td> {{OFF}} </td> 
{% endif %} 

如果d["current_enable_flag"]是一個Python布爾值,你可以完全放棄了== TRUE部分。

演示:

>>> from jinja2 import Template 
>>> template = Template('''\ 
... {% for d in client_data %} 
... <tr> 
...  <td>{{ d["serial_number"]}} </td> 
...  <td>{{ d["hardware_type"]}} </td> 
...  {% if d["current_enable_flag"] %} 
...   <td> {{ON}} </td> 
...  {% else %} 
...   <td> {{OFF}} </td> 
...  {% endif %} 
... </tr> 
... {% endfor %} 
... ''') 
>>> html_rendered = template.render(client_data=[ 
...  {'serial_number': 42, 'hardware_type': 'foo', 'current_enable_flag': True}, 
...  {'serial_number': 81, 'hardware_type': 'bar', 'current_enable_flag': False} 
... ], ON='ON', OFF='OFF') 
>>> print(html_rendered) 

<tr> 
    <td>42 </td> 
    <td>foo </td> 

     <td> ON </td> 

</tr> 

<tr> 
    <td>81 </td> 
    <td>bar </td> 

     <td> OFF </td> 

</tr>