当 DEBUG = False 时 Django 转义 javascript

Posted

技术标签:

【中文标题】当 DEBUG = False 时 Django 转义 javascript【英文标题】:Django escaping javascript when DEBUG = False 【发布时间】:2013-03-25 01:55:27 【问题描述】:

我在一个 Django 网站上遇到了这个奇怪的错误,该网站在 DEBUG = True 上运行良好,但在 DEBUG = False 时以一些有趣的方式中断。

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

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

变成

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

这显然是没有帮助的......

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

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

任何指针、帮助或可以更仔细地查看的好地方。

【问题讨论】:

if (foo @Foon: 是的,<> 也被转义了 【参考方案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

【讨论】:

以上是关于当 DEBUG = False 时 Django 转义 javascript的主要内容,如果未能解决你的问题,请参考以下文章