小能豆

使用 handler500 时,Django 不会通过电子邮件发送 500 错误

py

只要我没有自定义错误处理程序,我的 Django 应用程序就会正确地向所有管理员发送电子邮件。

但是,当我添加handler500来显示我的自定义 500_error.html 页面时,没有发送电子邮件。500_error.html 页面显示正确。似乎当您有处理程序时,Django 会假定您处理了错误,因此不会发送任何邮件。(这有道理吗?)

我的问题是:

  1. 即使使用了 handler500,我如何仍能强制 Django 发送电子邮件?或者
  2. 我如何获取错误描述并使用 send_email 在我的 handler500 视图函数中将其邮寄?

阅读 5

收藏
2025-01-13

共1个答案

小能豆

好的,问题是 handler500 调用的函数需要返回 500 状态代码,以便 Django 能够 sed 电子邮件。

设置此处理程序会将电子邮件发送给管理员并显示自定义模板:

def handler500(request):
    t = loader.get_template('500_error.html')
    response = HttpResponseServerError(t.render())
    response.status_code = 500
    return response
2025-01-13