我正在将代码库移至Django 1.11,并且我的一些小部件现在显示的HTML就像是转义的HTML:
<h2>Hello from Foo</h2>
我一直在浏览有关autoescape
和safe
的文档,并不高兴。所以我想我会回到模板的基础上。从字面上看,这是我的模板文件中唯一的文本:
<h2>Hello from Foo</h2>
然而,浏览器却将标签显示为ascii文本,而不是对浏览器的格式化命令。
这怎么可能发生?在此附近没有任何变量展开或自动转义,并且现在没有默认值为autoescape的simple_tag。但是某些代理正在对此代码应用HTML换码符。
我很困惑。
答案 0 :(得分:0)
我有一个听起来和您完全一样的问题。
具有一个模板标签,该模板标签在迁移到django 1.11之后,开始返回HTML转义的内容。
试图在我以前的Django版本1.8中复制该问题,但没有运气。
最后,我将mark_safe
中的django.utils.safestring
添加到return语句中,这解决了我的问题。还尝试了添加safe
,escape
过滤器和autoescape
标签的所有变体,但都没有运气。
编辑:刚刚发现以下内容:https://docs.djangoproject.com/en/1.10/topics/templates/#django.template.backends.django.DjangoTemplates
自Django 1.10起,autoescape
选项被引入,True
的默认值为DjangoTemplates
。看起来这可能是导致所描述问题的原因。