当DEBUG = False时,Django转义javascript

时间:2013-04-03 11:56:20

标签: django django-templates escaping django-cms heisenbug

我有一个奇怪的错误,一个Django网站可以与DEBUG = True一起使用,但在DEBUG = False时会以一些有趣的方式破解。

一个可能通用的事情是,当DEBUG为True时,管理员应用中的内联javascript会被转义。例如:

if(message && message!="error")

成为

if(message && message!="error")

这显然无益......

有没有人知道为什么会发生这种情况的一般原因?

更具体地说,这个网站正在使用Django CMS 2.3.5,我看到的管理页面是CMS页面管理员的一部分。我们在管理系统中有一个小的模板更改,但我已删除该模板更改,并且该错误仍然存​​在。无论如何,在下载页面之前,Django模板引擎中似乎发生了转义。

任何指针,帮助或好看的地方都要更加重视。

1 个答案:

答案 0 :(得分:1)

原来是django-htmlmin中间件 - 默认情况下,只有在DEBUG设置为False时才启动。我有filed a bug

转义实际上是由BeautifulSoup完成的 - 我已经问过another question about how to avoid the escaping

由于只有管理页面受到影响,我通过添加以下方法解决了这个问题:

EXCLUDE_FROM_MINIFYING = ('^admin/', '^en/admin/')

settings.py