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

时间:2014-09-04 23:24:31

标签: python django

在Django应用的settings.py文件中切换DEBUG设置之间的功能差异究竟是什么?

我首先假设DEBUG=True仅仅打开了Django的日志记录功能和中间件来进行错误报告,但现在I realize that was naive of me。 理解Django内部系统在两个布尔设置下如何以不同方式工作有助于在处理难以调试的普通状态500错误时形成假设

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

从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错误)。