Django 1.11:完全怪异的HTML转义问题

时间:2018-09-11 19:16:33

标签: django django-templates

我正在将代码库移至Django 1.11,并且我的一些小部件现在显示的HTML就像是转义的HTML:

<h2>Hello from Foo</h2>

我一直在浏览有关autoescapesafe的文档,并不高兴。所以我想我会回到模板的基础上。从字面上看,这是我的模板文件中唯一的文本:

<h2>Hello from Foo</h2>

然而,浏览器却将标签显示为ascii文本,而不是对浏览器的格式化命令。enter image description here

这怎么可能发生?在此附近没有任何变量展开或自动转义,并且现在没有默认值为autoescape的simple_tag。但是某些代理正在对此代码应用HTML换码符。

我很困惑。

1 个答案:

答案 0 :(得分:0)

我有一个听起来和您完全一样的问题。

具有一个模板标签,该模板标签在迁移到django 1.11之后,开始返回HTML转义的内容。

试图在我以前的Django版本1.8中复制该问题,但没有运气。

最后,我将mark_safe中的django.utils.safestring添加到return语句中,这解决了我的问题。还尝试了添加safeescape过滤器和autoescape标签的所有变体,但都没有运气。

编辑:刚刚发现以下内容:https://docs.djangoproject.com/en/1.10/topics/templates/#django.template.backends.django.DjangoTemplates

自Django 1.10起,autoescape选项被引入,True的默认值为DjangoTemplates。看起来这可能是导致所描述问题的原因。