Django 错误报告简单语法错误

Django Error Reporting Simple Syntax Errors

提问人:jsexauer 提问时间:11/15/2013 更新时间:11/15/2013 访问量:302

问:

我是 Django 的新手,正在学习本教程。我用手指写了一些代码,如果我像标准脚本一样运行文件,这通常会引发语法错误或名称错误。但是,当我尝试使用Web浏览器浏览到视图时,我只得到一个空白页面,没有相关的错误/回溯。我从中运行的控制台也是如此 - 它只是显示 GET 请求。此外,启动服务器时,控制台显示“发现 0 个错误”,这显然是错误的。manage.py runservermanage.py runserver

我的问题是 Django 如何报告错误和回溯?我需要启用任何功能吗?(我的 settings.py 文件)这让我有点不安,我可能会打错字,突然间整个网站停止工作,我没有得到问题所在的报告。DEBUG = True

django 错误报告

评论


答:

1赞 Tim Edgar 11/15/2013 #1

关于运行开发服务器,它会说在启动服务器时发现 0 个错误。这通常是指文件和模型中的配置和语法。它只会报告通过启动代码路径出现的错误,而启动代码路径通常不会通过视图处理程序。settings.py

当您修改文件时,开发服务器足够智能,可以自行重新加载。语法错误将使开发服务器崩溃。

如果你看到一个空白页,并且 GET 请求成功返回,那么从 Django 的角度来看,你的代码工作正常。它正在处理请求并返回响应,尽管您知道响应不正确。通常,此处的语法错误将导致视图返回 500,你将在视图中看到返回的调试信息 (if ),并且你也会在控制台中看到它。您的错别字似乎是有效的 python,因为它成功地通过您的视图处理程序返回了一个空白页。除了对 Django 的单元测试之外,你真的无能为力,空白页可能是一个有效的响应。DEBUG = True

现在,当您从开发阶段转到生产阶段时,您可能想知道页面何时遇到错误。Django 构建了 Python 的日志框架来处理错误和其他消息。在文件中的默认值,设置一个处理程序,该处理程序在 上出错。如果您在设置文件中进行了设置,您将通过电子邮件收到服务器上发生的任何 500 错误的堆栈跟踪。随着您的复杂性越来越高,您可以通过向 Python 的日志记录框架和自定义处理程序发送消息来创建自己的日志记录。settings.pymail_adminsdjango.requestADMINSEMAIL_BACKEND

import logging

logger = logging.GetLogger(__name__) #using the module name so in your settings.py you can configure different settings per module

logger.info('msg')
logger.error('msg')

我建议将 Sentry 作为错误消息的处理程序,它可以进行点击计数并存储您的错误日志。

评论

0赞 jsexauer 11/17/2013
事实证明,这实际上比引线更是一个问题。当我使用 chrome 时,我在 Django 中没有收到任何“黄页”错误(它们只是空白)。但是,当我使用IE时,我得到了它们。我将创建一个包含这些详细信息的新问题。
0赞 1/22/2017
这有点不准确。在启动过程中,视图模块中的语法错误肯定会被捕获,因为 Django 需要导入视图才能创建路由映射。但是,它不会在大多数模块中捕获任何运行时错误,但这是一个不同的问题。