【发布时间】:2012-04-13 22:02:53
【问题描述】:
Django Basic Inlines 应用程序根据 app/model/id 组合从伪 HTML 语法呈现预先确定的模板。例如,如果您正在撰写博客文章,则可以插入保存在图像模型中的图像:
# In the admin
This is the body of my post.
<inline type="media.image" id="1" class="full">
模板然后采用render_inlines过滤器,需要标记safe才能正确呈现HTML:
# Template
{{ post.body|render_inlines|safe }}
但即使使用safe,过滤器仍会转义HTML,在源代码中创建&lt;p&gt;&lt;img src="..."&gt;&lt;p&gt;。
根据文档,过滤器应使用mark_safe 以防止在过滤器级别自动转义,但parser.py 中的inlines 函数已使用mark_safe。
在 Django 1.4 中是否需要进一步停止自定义过滤器层的自动转义?我似乎无法摆脱这种自动转义,无论是在
我尝试使用autoescape=None,但似乎也没有帮助。
【问题讨论】:
-
去掉 safe 和 {% autoescape off %} 的结果是什么?
-
没什么,同样的结果,这就是为什么我相信转义发生在过滤器级别而不是模板。如果某些内容已经被转义,则在模板中放置
safe或关闭autoescape不会执行任何操作。已经很安全了。
标签: python django django-templates django-template-filters