bottle 从 python 代码块写入页面内容

bottle write to page content from python code block

是否可以从 python code block in a Bottle SimpleTemplate file 中写入页面内容?

例如:

<!DOCTYPE html>
<html lang="en">

<body>
    <%
      # A block of python code
      basket = [1,2,3]
      print("<ul>")    # this prints on the server console, not the rendered page
      for item in basket:
        print("<li>" + str(item) + "</li>")

      print("</ul>")
    %>      
</body>
</html>

我知道在这种情况下我可以使用循环的特定语法,但我想知道在更复杂的情况下使用的替代方法:

<ul>
  % for item in basket:
    <li>{{item}}</li>
  % end
</ul>
<!DOCTYPE html>
<html lang="en">
%result = ''
<body>
    <%
      # A block of python code
      basket = [1,2,3]
      result+="<ul>"    # this prints on the server console, not the rendered page
      for item in basket:
        result+="<li>" + str(item) + "</li>"

      result+="</ul>"
    %>      
{{result}}
</body>
</html>

不,恐怕这不是直接可能的。即使是,你可能也不应该这样做。

最简洁的设计将其逻辑保留在服务器代码中;模板仅供展示。

例如,this templating tutorial表示:

In general we'd like to separate the HTML content from the program logic.

你说:

I know i could use the specific syntax for loops in this case, but i'd like to know an alternative for use in more complex cases

我很好奇:您为什么要寻找替代品?您提到“更复杂的情况”,但您的示例只是一个循环。如果您向我们展示了一个您认为无法以标准方式干净利落地处理的示例,也许我们可以帮助您解决该特定案例。