【问题标题】:Python/Bottle template weird behavior when generating html table生成 html 表时的 Python/Bottle 模板奇怪的行为
【发布时间】: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>

所以由于某种原因,它会在每次迭代时不断修改&lt;/table&gt;,这完全搞砸了最后一页:)。

提前致谢!

彼得

【问题讨论】:

  • 什么是模板引擎?你必须分别结束 if 和 for 吗? (我使用 Jinja2,这需要两个 ends)。顺便说一句:你可能知道这一点,但这些块都做同样的事情,所以如果这是你完成的代码,你可以摆脱所有 ifs...
  • 我们需要看一个更完整的例子来说明这个问题。我很怀疑,因为 &lt;/table&gt; 在您的输出中多次出现,但在您的模板中的 for 循环之外。这个 sn-p 之外的东西是相关的。
  • 大家好,这是 SimpleTemplate 引擎:[link]bottlepy.org/docs/dev/stpl.html

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


【解决方案1】:

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

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

例如:

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

因此,正如 kwinkunks 所建议的,if 也必须以 end 结尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多