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

Python Django中DEBUG=True和False的功能区别是什么?,python,django,Python,Django,在Django应用程序的settings.py文件中切换DEBUG设置之间的功能差异到底是什么? 我首先假设DEBUG=True只是启用了Django的日志功能和用于错误报告的中间件,但是现在。 了解Django内部系统在两种布尔设置下如何不同地工作,有助于在处理难以调试的普通状态500错误时形成假设debug=True的主要优点之一是详细的错误页面。Django提供了出错原因的详细跟踪。这对调试非常有帮助。基本上,在调试模式下,django会记住它执行的每个SQL查询(这也使得它完全不适合生产

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

我首先假设
DEBUG=True
只是启用了Django的日志功能和用于错误报告的中间件,但是现在。
了解Django内部系统在两种布尔设置下如何不同地工作,有助于在处理难以调试的普通状态500错误时形成假设

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

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

从Django 1.6.2开始,导入错误不一定在
DEBUG=True
中捕获,但肯定在
DEBUG=False

简单示例:尝试将应用程序的
settings.py
import yourapp.settings
)导入其中一个视图,然后尝试引用一个不存在的变量:
settings.var\u this\u not\u exist
。对于引用该不存在变量的任何视图,当
DEBUG=False
时,这只会是一个问题(导致状态500错误)

  • 如果出现错误,页面将显示错误的详细信息

  • 如果
    DEBUG=False
    settings.py的
    ALLOWED\u HOSTS
    将起作用,您应该仔细设置它

  • 媒体
    静态
    将不提供对
    DEBUG=False
    的访问,您必须在webserver的帮助下提供它们,如
    Nginx
    Apache


  • 在功能上,没有区别。但是,DEBUG定义了是否应该在浏览器级别向用户显示错误消息(DEBUG=True)v/s向管理员发送电子邮件(DEBUG=False,带有一些设置)。那么几十篇关于只使用
    DEBUG=True
    (例如:)的代码的帖子呢?当
    DEBUG=True
    时,似乎会发生更多的错误,否则该设置不会中断代码的工作-只是以不同的方式报告错误。谢谢,这肯定是所有相关的,但我知道肯定会发生更多的错误,因为即使使用
    ALLOWED_HOSTS=['*]
    我也会看到这500个错误。我认为,
    DEBUG=True
    也会自动更正代码的某些方面(但这只是我的猜测,这就是为什么我首先提出这个问题的原因)