1

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

但是,当我遇到语法错误时,我会得到神秘的 Apache“内部服务器错误”页面,并且必须通过跟踪 apache 日志来调试 Django。

为什么 Django 不显示错误页面?

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

任何帮助将不胜感激。

4

1 回答 1

3

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

进入 apache 日志的是 python 解释器的stderr

来自mod_wsgi 文档

使用 mod_wsgi 时,除非您或您正在使用的 Web 框架采取特定操作来捕获异常并以替代方式呈现详细信息,否则将记录未捕获异常的详细信息的唯一位置是 Apache 错误日志文件。因此,当出现问题时,Apache 错误日志文件是您的主要信息来源。

总结一下:这SyntaxError意味着代码不是python,因此没有人可以捕获异常并将其显示在友好的网页中。

我不知道如何在 Apache 中更改这一点,但至少在我运行绿色独角兽+ nginx的测试中,如果我运行我的绿色独角兽工作人员,我确实会在 500 页面上获得堆栈跟踪--debug- 即使 Django 因为SyntaxError

于 2013-08-15T12:42:36.643 回答