Django将HTML对象作为纯文本传递给模板

时间:2013-08-13 18:11:17

标签: html django dom zinnia

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

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

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

django admin

db中的条目在页面本身上呈现,就好像< p>标记是纯文本:

page

enter image description here

在Zinnia中,这些html标记是作为_entry_detail_base.html

中{{object_content}}对象的一部分生成的
<div class="entry-content">
     {{ object_content }}
</div>

我查看了Zinnia中的entry.py模型,我无法确定这些标记的来源或者它们是如何以浏览器不解释它们的方式传入的(HTML)。是否有可以应用的过滤器可以解决这个问题?感谢

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

查看百日草的源代码: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>