Django中DEBUG = True和False之间的功能差异是什么?

问题描述:

在Django应用程序的settings.py文件中切换DEBUG设置的功能区别是什么?Django中DEBUG = True和False之间的功能差异是什么?

我第一次假设DEBUG=True只是打开Django的日志记录功能和中间件的错误报告,但现在I realize that was naive of me。 了解Django内部系统在两种布尔设置下的工作方式有助于在处理难以调试时形成假设,明文状态500错误

+0

功能上,没有差异。然而,DEBUG定义了错误消息是否应该在浏览器级显示给用户(DEBUG = True)v/s发送一封电子邮件给管理员(DEBUG =假设有一些设置) – karthikr 2014-09-04 23:33:03

+1

那么几十个关于代码的SO帖子呢* only *使用'DEBUG = True'(例如:http://stackoverflow.com/questions/15128135/setting-debug-false-causes-500-error)?当'DEBUG = True'时似乎更多,否则设置不会破坏代码工作 - 仅仅以不同的方式报告错误。 – ecoe 2014-09-05 13:51:32

DEBUG = True的主要优点之一是详细的错误页面。 Django提供了详细的堆栈跟踪。这对调试非常有帮助。基本上,在DEBUG模式下,django会记住它执行的每个SQL查询(这又使它完全不适合生产)。

此外,如果DEBUG = True,则禁用主机验证。换句话说,如果DEBUG = False,则需要设置ALLOWED_HOSTS。

+1

谢谢,这绝对是相关的,但我知道必须有更多的事情发生,因为即使使用'ALLOWED_HOSTS = ['*']'我会看到这500个错误。我认为'DEBUG = True'也会自动纠正代码的某些方面(但这只是我的猜测,这就是为什么我问这个问题的原因) – ecoe 2014-09-06 11:58:41

由于Django的1.6.2 it has been identified before那些进口的错误不一定陷入DEBUG=True,但肯定是在DEBUG=False

简单的例子:尝试导入您的应用程序的settings.pyimport yourapp.settings)到你的意见,然后再重引用不存在的变量:settings.var_that_does_not_exist。这只会是引用该不存在变量的任何视图的DEBUG=False时的问题(导致状态500错误)。