如何让变量中的 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 标签进行编码。
可能“<
”是为 <
编码的,而“>
”是为 >
编码的,这就是它在 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 < 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,请告诉我们您使用的是哪个模板系统,也许我们可以为您指出正确的解决方案。虽然,既然您知道问题出在哪里,您可以搜索该模板系统的文档并自己找到答案。
我的代码是这样的
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 标签进行编码。
可能“<
”是为 <
编码的,而“>
”是为 >
编码的,这就是它在 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 < 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,请告诉我们您使用的是哪个模板系统,也许我们可以为您指出正确的解决方案。虽然,既然您知道问题出在哪里,您可以搜索该模板系统的文档并自己找到答案。