我有一个自定义 Django 500 页面并将调试设置为 False。当我的应用程序遇到运行时错误时,我会按预期获得 Django 堆栈跟踪。
但是,当我遇到语法错误时,我会得到神秘的 Apache“内部服务器错误”页面,并且必须通过跟踪 apache 日志来调试 Django。
为什么 Django 不显示错误页面?
我相信我曾经为所有错误获取 Django 错误页面 - 而不仅仅是运行时错误。
任何帮助将不胜感激。
这是因为运行 django(由 apache 启动)的解释器甚至不会启动,因此无法渲染实际页面。
进入 apache 日志的是 python 解释器的stderr
使用 mod_wsgi 时,除非您或您正在使用的 Web 框架采取特定操作来捕获异常并以替代方式呈现详细信息,否则将记录未捕获异常的详细信息的唯一位置是 Apache 错误日志文件。因此,当出现问题时,Apache 错误日志文件是您的主要信息来源。
总结一下:这SyntaxError
意味着代码不是python,因此没有人可以捕获异常并将其显示在友好的网页中。
我不知道如何在 Apache 中更改这一点,但至少在我运行绿色独角兽+ nginx的测试中,如果我运行我的绿色独角兽工作人员,我确实会在 500 页面上获得堆栈跟踪--debug
- 即使 Django 因为SyntaxError