【发布时间】:2015-08-07 20:28:37
【问题描述】:
我遵循了一些教程(也是第一个),但我的代码没有按预期工作。基本上我希望以这种方式生成一个 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>
问题是即使在%end 之后,python 也会继续运行for 循环。我在生成的页面中看到过:
<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>,这完全搞砸了最后一页:)。
提前致谢!
彼得
【问题讨论】:
-
什么是模板引擎?你必须分别结束 if 和 for 吗? (我使用 Jinja2,这需要两个
ends)。顺便说一句:你可能知道这一点,但这些块都做同样的事情,所以如果这是你完成的代码,你可以摆脱所有ifs... -
我们需要看一个更完整的例子来说明这个问题。我很怀疑,因为
</table>在您的输出中多次出现,但在您的模板中的for循环之外。这个 sn-p 之外的东西是相关的。 -
大家好,这是 SimpleTemplate 引擎:[link]bottlepy.org/docs/dev/stpl.html
标签: python html for-loop html-table bottle