Bottle Python中的重基模板函数未按预期渲染模板

4 投票
2 回答
1587 浏览
提问于 2025-04-18 01:37

我正在尝试复现Bottle文档中的rebase函数的基本示例,但当我的模板被渲染时,HTML代码被编码了,我的标签被替换成了对应的HTML代码。

我的模板:

% rebase('base.tpl', title='Page Title')
<p>Page Content ...</p>

我的基础模板:

<html>
<head>
  <title>{{title or 'No title'}}</title>
</head>
<body>
  {{base}}
</body>
</html>

最终渲染的HTML:

<html>
<head>
  <title>Page Title</title>
</head>
<body>
      &lt;p&gt;Page Content ...&lt;/p&gt;

</body>
</html>

如你所见,我的模板在正确的位置被包含,但就像模板引擎出于安全原因对其进行了转义,我不知道为什么会这样。

我很惊讶自己是唯一遇到这个问题的人。

我使用的是Bottle v0.12.5,并在不同的环境(MacOSX和Ubuntu)上复现了这个问题。

有什么想法或建议吗?谢谢!

2 个回答

0

我觉得;

Bottle v0.12(稳定版)的文档不太对。因为它提到的 {{ base }} 是错误的。而Bottle的开发版文档是正确的,所以应该用 {{ ! base }}。

6

HTML中的特殊字符会自动被转义,也就是说它们会被处理成一种安全的形式。如果你想把它们恢复成原来的样子,可以在你的表达式前面加一个!

<body>
  {{!base}}
</body>

你可以在这里查看相关的文档。

撰写回答