【问题标题】:Unable to render variable in django template that contains HTML无法在包含 HTML 的 django 模板中呈现变量
【发布时间】:2019-04-04 01:14:01
【问题描述】:

我正在将一个变量传递给一个包含 html 的 django 模板。例如<strong>example</strong>。在将它存储在我的变量中之前,我将此字符串标记为 mark_safe()。

当我将它加载到模板中并在浏览器中加载页面时,它会将 html 显示为纯文本 <strong>example</strong>。

如果我在 chrome 控制台中查看它,唯一不同的是文本用括号括起来。所以它看起来像这样,“<strong>example</strong>”

就像我说的那样,我已经阅读了所有其他 stackoverflow 帖子并使用 {% autoescape off %} 标签标记了变量,并且我尝试了“安全”标签。这些将删除转义,但 HTML 仍然不呈现。下面是未转义的实际 html。我想知道它是否是它前面的空间?

                    <p>Modern Comics That Are Valuable But Often Overlooked and Should Be Sought Out In Dollar Bins and In Your Own Collection</p>

就像拥有 $-Ray 视觉

感谢您的帮助。

【问题讨论】:

  • 你能发布你的代码吗?
  • 代码真的不多。我只是从 django 模型中加载一个字符串。数据['description'] = mark_safe(category.description.strip())。然后在渲染 django 模板时将数据对象向下传递。我通过 {{description|safe}} 在他们的模板中引用该变量

标签: html django


【解决方案1】:

首先需要将转义的字符串解析为 HTML。然后您可以取消转义该字符串并将其传递下去,它将正确呈现。

import html.parser
html_parser = html.parser.HTMLParser()
description = html_parser.unescape(category.description)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2021-08-17
    • 2011-03-09
    • 2017-11-08
    • 2015-06-21
    • 2011-07-29
    • 2019-06-25
    相关资源
    最近更新 更多