【问题标题】:Django passing HTML objects into template as plain textDjango 将 HTML 对象作为纯文本传递给模板
【发布时间】:2013-08-13 18:11:17
【问题描述】:

这感觉像是一个非常愚蠢的问题,但我对博客创建模块 django-zinnia 的行为感到困惑。

当我测试输入纯文本帖子时,它会为每个句子附加 html 标签,浏览器不会将其读取为 html。

例如,如果我将这个输入到数据库中(没有 html):

来自 db 的条目在页面本身上呈现如下,就好像

标记是纯文本:

在 Zinnia 中,这些 html 标记作为 _entry_detail_base.html 中 {{ object_content }} 对象的一部分生成

<div class="entry-content">
     {{ object_content }}
</div>

我查看了 Zinnia 中的 entry.py 模型,但无法识别这些标签的来源或它们是如何以浏览器无法解释它们的方式传入的(html)。有没有我可以应用的过滤器可以解决这个问题?谢谢

【问题讨论】:

    标签: html django dom zinnia


    【解决方案1】:

    这是 Django 模板的默认行为。使用{{ object_content|safe }}{% autoescape off %} {{ object_content }} {% endautoescape %}(用于多个变量)来防止html 实体被转义。

    请注意,使用safe 过滤器并不意味着如果您在其后使用另一个过滤器,输出不会自动转义。

    【讨论】:

    • 完美。使用 {% autoescape off %} {{ object_content }} {% endautoescape %}。非常感谢。
    【解决方案2】:

    查看百日草的源代码:https://github.com/Fantomas42/django-blog-zinnia/blob/master/zinnia/templates/zinnia/_entry_detail_base.html

    它使用|safe模板标签:

    <div class="entry-content">
        {{ object_content|safe }}
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2018-03-08
      • 1970-01-01
      相关资源
      最近更新 更多