当 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 不提供静态文件