我是Django的新手,正在完成本教程。我胖了一些代码,如果我像标准脚本一样运行文件,通常会引发语法错误或名称错误。但是,当我尝试使用manage.py runserver
浏览我的网络浏览器中的视图时,我只得到一个没有相关错误/回溯的空白页面。从我运行manage.py runserver
的控制台也是如此 - 它只显示了GET请求。此外,启动服务器时,控制台显示“找到0错误”,这显然是错误的。
我的问题是Django如何报告错误和追溯?我需要启用任何东西吗? (我的settings.py文件中有DEBUG = True
)我有点不紧张,我可以做一个小错字,突然整个网站停止工作,我没有得到报告问题是。
答案 0 :(得分:1)
关于运行开发服务器,它会说在启动服务器时发现0错误。这通常是指settings.py
文件和模型中的配置和语法。它只会报告通过启动代码路径出现的错误,通常它不会通过您的视图处理程序。
在修改文件时,开发服务器足够智能,可以自行重新加载。语法错误会使开发服务器崩溃。
如果您看到一个空白页面并且GET请求成功返回,那么您的代码在Django视角下工作正常。虽然您知道响应不正确,但它正在处理请求并返回响应。通常,此处的语法错误将导致视图返回500,您将在其中看到视图中返回的调试信息(如果DEBUG = True
),您也将在控制台中看到它。看起来你的拼写错误是有效的python,因为它成功地通过你的视图处理程序返回一个空白页面。除了Django的单元测试之外,你真的没有什么可以做的,空白页面可能是一个有效的响应。
现在,当您从开发转向生产时,您可能想知道页面何时遇到错误。 Django builds off Python's logging framework处理错误和其他消息。 settings.py
文件中的默认值,设置了一个mail_admins
处理程序,处理程序在django.request
上出错。如果您在设置文件中设置了ADMINS
和EMAIL_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作为错误消息的处理程序,它会计算并计算错误日志。