Django错误页面不显示语法错误

时间:2013-08-15 12:40:35

标签: python django apache

我有一个自定义的Django 500页面,调试设置为False。当我的应用程序遇到运行时错误时,我按预期获得Django堆栈跟踪。

然而,当我遇到语法错误时,我得到了神秘的Apache“内部服务器错误”页面,并且必须通过拖尾apache日志来调试Django。

为什么Django没有显示错误页面?

我相信我曾经为所有错误获取Django错误页面 - 而不仅仅是运行时错误页面。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

这是因为运行django的解释器(由apache启动)甚至不会启动,因此无法呈现实际的页面。

apache日志中的内容是python解释器的stderr

来自mod_wsgi documentation

  

使用mod_wsgi时,除非您或您正在使用的Web框架   采取具体行动来捕捉异常并提供详细信息   另一种方式,唯一没有被捕的细节   异常将被记录在Apache错误日志文件中。该   因此,Apache错误日志文件是您的主要信息来源   当事情出错时。

总结一下:SyntaxError表示代码不是python ,因此没有人能够捕获异常并将其显示在友好的网页中。

我不知道如何在Apache中更改此功能,但至少在运行green unicorn + nginx的测试中,如果我运行我的绿色独角兽工作者,我会在500页上获得堆栈跟踪--debug - 即使Django由于SyntaxError

而无法加载