python - 使用嵌入式 python 和 SimpleTemplate Engine 作为字符串传递给 template()

标签 python bottle

我正在调试一个应用程序,并希望使用 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/

相关文章:

python - 重采样时间序列的中心日期时间

python - 在 Scrapy 中以编程方式重置 TCP 连接

python - Pandas 时间序列用周末均值生成的一个值替换周末

python - 是否可以将 gzip 压缩与服务器发送事件 (SSE) 一起使用?

python - 使用 BottlePy/GAE 进行浏览器缓存

python - Python Opencv img.item()性能太慢

python - 如何正确地将参数从 Bottle View 传递到装饰 View ?

python - 返回 HTTP 响应并继续处理 - python bottle API

python - 使用 Bottle.py 在每个页面的模板上下文中包含变量

python - 正确使用 os.path 和 os.join