当 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的主要内容,如果未能解决你的问题,请参考以下文章

当 DEBUG=False 时,我的 Django 管理面板给出服务器错误(500)

为啥当 Debug 设置为 False 时,Django 会为静态媒体生成 HTTP 500 错误?

Django Elasticbeanstalk:当 Debug = False 时无法访问静态文件

当 Debug=False 时 Django Heroku 不提供静态文件

当 debug=false 时 Django 媒体文件不起作用

当 DEBUG = False(产品)时,Django 管理错误(总是需要登录几次)