我有一个自定义的Django 500页面,调试设置为False。当我的应用程序遇到运行时错误时,我按预期获得Django堆栈跟踪。
然而,当我遇到语法错误时,我得到了神秘的Apache“内部服务器错误”页面,并且必须通过拖尾apache日志来调试Django。
为什么Django没有显示错误页面?
我相信我曾经为所有错误获取Django错误页面 - 而不仅仅是运行时错误页面。
非常感谢任何帮助。
答案 0 :(得分:3)
这是因为运行django的解释器(由apache启动)甚至不会启动,因此无法呈现实际的页面。
apache日志中的内容是python解释器的stderr
使用mod_wsgi时,除非您或您正在使用的Web框架 采取具体行动来捕捉异常并提供详细信息 另一种方式,唯一没有被捕的细节 异常将被记录在Apache错误日志文件中。该 因此,Apache错误日志文件是您的主要信息来源 当事情出错时。
总结一下:SyntaxError
表示代码不是python ,因此没有人能够捕获异常并将其显示在友好的网页中。
我不知道如何在Apache中更改此功能,但至少在运行green unicorn + nginx的测试中,如果我运行我的绿色独角兽工作者,我会在500页上获得堆栈跟踪--debug
- 即使Django由于SyntaxError