2

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

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

例如,如果我将其输入数据库(无 html):

django 管理员

来自 db 的条目在页面本身上呈现如下,就好像 < p > 标记是纯文本一样:

页

在此处输入图像描述

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

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

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

4

2 回答 2

6

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

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

于 2013-08-13T18:19:24.583 回答
2

查看 Zinnia 的源代码: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>
于 2013-08-13T18:28:19.193 回答