我正在将代码库移动到Django 1.11,我的一些小部件现在显示HTML,好像它们是HTML转义的:
<h2>Hello from Foo</h2>
我一直在浏览关于autoescape
和safe
的文档,没有任何乐趣。所以我想我会回到模板的基础知识。这实际上是我的模板文件中唯一的文本:
<h2>Hello from Foo</h2>
然而,浏览器将标记呈现为ascii文本,而不是作为浏览器的格式化命令.
怎么会发生这种情况?在此附近没有变量扩展或自动视图,现在没有simple_tag默认为autoescape。但是一些代理正在对此代码应用HTML转义。
我很困惑。
我有一个听起来几乎和你一样的问题。
有一个模板标签,在迁移到django 1.11之后,开始返回HTML转义的内容。
尝试复制我之前版本的Django上的问题,这是1.8,没有运气。
最后,我将mark_safe
中的django.utils.safestring
添加到return语句中,它解决了我的问题。还尝试了添加safe
,escape
过滤器和autoescape
标签的所有变体,但没有运气。
看起来自Django 1.10引入了autoescape
选项,并且True
默认为DjangoTemplates
。看起来这可能是导致所述问题的原因。