【问题标题】:How do I get html tags in variables to work?如何让变量中的 html 标签起作用?
【发布时间】:2016-01-27 18:35:24
【问题描述】:

我的代码是这样的

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 语法。

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

【问题讨论】:

  • 您的问题不清楚。请解释问题并阅读如何正确格式化您的代码。
  • 对不起。我的问题是变量 $text 中的 html-tags 不会改变文本的外观。它们完全一样。
  • 变量不是 HTML 的一部分。您使用什么语言?

标签: html python-2.7 variables tags markdown


【解决方案1】:

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

默认情况下,Templetor 使用 web.websafe 过滤器进行 HTML 编码。

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

要关闭过滤器,请在 $ 之后使用 :。例如:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    打印出你的变量,看看你没有编码你的html标签。

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

    【讨论】:

    • 如果我打印 $text,结果是 exampletext 而不是 exampletext。 @MilosOzegovic
    • 这应该是评论,而不是答案。
    猜你喜欢
    • 2017-01-13
    • 2022-01-20
    • 1970-01-01
    • 2019-06-24
    • 2023-04-03
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多