2017-05-30 292 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>