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

eco*_*coe 7 python django

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

我一开始以为DEBUG=True只是打开了 Django 的日志记录功能和中间件来报告错误,但现在我意识到我太天真了。了解 Django 内部系统在两种布尔设置下的工作方式有何不同,有助于在处理难以调试的普通状态 500 错误时形成假设

dou*_*leo 5

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

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

  • 谢谢,这绝对是相关的,但我知道肯定还有更多的事情发生,因为即使使用 `ALLOWED_HOSTS=['*']` 我也会看到这 500 个错误。我认为“DEBUG=True”也会自动更正代码的某些方面(但这只是我的猜测,这就是我首先问这个问题的原因) (3认同)

air*_*aft 5

  1. DEBUG=True如果有错误,页面将显示错误的详细信息。

  2. 如果DEBUG=FalseALLOWED_HOSTS可以settings.py工作,则应小心设置它。

  3. 和不会提供 的访问权限,您必须借助网络服务器(例如或 )为它们提供访问media权限。staticDEBUG=FalseNginxApache