0

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

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

4

1 回答 1

1

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

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

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

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

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作为您的错误消息的处理程序,它确实会计数并存储您的错误日志。

于 2013-11-15T03:40:07.877 回答