生成html表时Python / Bottle模板奇怪的行为

时间:2015-07-30 14:52:00

标签: python html for-loop html-table bottle

我已经遵循了一些教程(第一瓶),但是我的代码没有按预期工作。基本上我想用这种方式生成一个html表:

模板以这种方式提供:

return template('template', data=result)

我模板中的代码片段:

%for item in data.data:
  %if ("X" in c_label and "Y" not in p_label and "Z" not in p_label):
  <tr>
    <td>{{child}}</td>
    <td>{{parent}}</td>
  </tr>
  %elif ("X" in c_label and "Y" in p_label):
  <tr>
    <td>{{child}}</td>
    <td>{{parent}}</td>
  </tr>
  %elif ("X" in c_label and "Z" in p_label):
  <tr>
    <td>{{child}}</td>
    <td>{{parent}}</td>
  </tr>
  %elif "W" in c_label:
  <tr>
    <td>{{child}}</td>
    <td>{{parent}}</td>
  </tr>
  %elif "U" in c_label:
  <tr>
    <td>{{child}}</td>
    <td>{{parent}}</td>
  </tr>
  %elif "Z" in c_label:
  <tr>
    <td>{{child}}</td>
    <td>{{parent}}</td>
  </tr>
%end
</table>

问题是python即使在for之后仍然继续运行%end周期。我在生成的页面中看到过它:

<table>
  <tr>
    <td>U</td>
    <td>I</td>
  </tr>
</table>
  <tr>
    <td>X</td>
    <td>U</td>
  </tr>
</table>
  <tr>
    <td>U</td>
    <td>I</td>
  </tr>
</table>

因此,出于某种原因,它每次迭代都会对</table>进行修改,这完全是最终页面的主要内容:)。

提前致谢!

彼得

1 个答案:

答案 0 :(得分:0)

感谢kwinkunks,我已将其识别为SimpleTemplate引擎。

答案在这里: http://bottlepy.org/docs/0.11/stpl.html

e.g:

<div>\\
 %if True:
<span>content</span>\\
 %end
</div>

正如kwinkunks建议的那样,if也必须以end结束。