如何让变量中的 html 标签起作用?

How do I get html tags in variables to work?

我的代码是这样的

Python:

render = web.template.render('templates/', base="layout")
.
.
.
fileout_text = codecs.open(filename_text, 'r', 'utf-8').read()
text = markdown.markdown(fileout_text)
return render.text_temple(text=text)

text_template.html:

$def with text
     < text>$text < /text>

现在 $text 应该包含 html 标签而不是 markdown 语法。

我的问题是当网站显示时,标签仍然是文本——这是为什么?

打印出您的变量,以查看您没有对 html 标签进行编码。

可能“<”是为 &lt; 编码的,而“>”是为 &gt; 编码的,这就是它在 HTML 中显示代码的原因你的浏览器。

作为安全措施,您的模板系统正在逃避 HTML。你需要告诉模板 Markdown 输出的 HTML 是“安全的”。根据您的代码,我假设您使用的是 web.py。 web.py docs 状态:

By default, Templetor uses web.websafe filter to do HTML-encoding.

>>> render.hello("1 < 2")
"Hello 1 &lt; 2"

To turnoff filter use : after $. For example:

The following will not be html escaped.
$:form.render()

所以在你的模板中试试这个:

$def with text
     < text>$:text < /text>

添加冒号 ($:text) 将告诉模板系统不要转义 HTML.

如果我猜错了并且您没有使用 web.py,请告诉我们您使用的是哪个模板系统,也许我们可以为您指出正确的解决方案。虽然,既然您知道问题出在哪里,您可以搜索该模板系统的文档并自己找到答案。