我正在调试一个应用程序,并希望使用 Bottle SimpleTemplate 来渲染 HTML 和 Python。如果我使用模板作为单独的文件 (views/simple.tpl),则 Python 会正确呈现。
如果我尝试将 Python 作为字符串传递,则会收到 NameError("name 'demo' is not Defined",)
from bottle import template
text = "debugging"
return template(
"<p>{{text}}</p>" +
"% demo = 'hello world'" +
"<p>{{demo}}</p>",
text=text
)
这可能吗?
最佳答案
嵌入 Python 代码的行必须以 %
开头。问题是您使用的是字符串连接,它不保留换行符。简而言之,该字符串相当于以下行:
<p>{{text}}</p>% demo = 'hello world'<p>{{demo}}</p>
由于 %
不是第一个字符,因此它对 Bottle 来说没有任何意义。
手动添加换行符:
return template(
"<p>{{text}}</p>\n"
"% demo = 'hello world'\n"
"<p>{{demo}}</p>",
text=text
)
作为旁注,您可以使用 implicit string literal concatenation (如上面的代码所示)。
关于python - 使用嵌入式 python 和 SimpleTemplate Engine 作为字符串传递给 template(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36045258/