Django error reporting通过发送邮箱来处理未捕获的异常,并且(可选)向用户显示一个漂亮的500错误页面.

这非常有效,但在少数情况下,我希望允许用户不受干扰地继续他们的业务,但仍然让Django向我发送有关该异常的邮箱错误报告.

所以基本上:我能手动发送邮箱错误报告,即使我捕捉到了异常吗?

当然,我希望避免手动生成错误报告邮箱.

推荐答案

您可以使用以下代码手动发送有关request和异常e的邮箱:

import sys
import traceback
from django.core import mail
from django.views.debug import ExceptionReporter

def send_manually_exception_email(request, e):
    exc_info = sys.exc_info()
    reporter = ExceptionReporter(request, is_email=True, *exc_info)
    subject = e.message.replace('\n', '\\n').replace('\r', '\\r')[:989]
    message = "%s\n\n%s" % (
        '\n'.join(traceback.format_exception(*exc_info)),
        reporter.filter.get_request_repr(request)
    )
    mail.mail_admins(
        subject, message, fail_silently=True,
        html_message=reporter.get_traceback_html()
    )

您可以在如下所示的视图中测试它:

def test_view(request):
    try:
        raise Exception
    except Exception as e:
        send_manually_exception_email(request, e)

Django相关问答推荐

如何在Django模板中为无效词典查找打开异常?

如何在 Django 中设置与 Session 相关的字段

DjangoRestFramework 解析错误:"多部分表单解析错误多部分中的无效边界:None"

Django Rest Framework 速率限制动态基于用户类型

Django ORM __in 但不是精确的,包含不区分大小写的?

为什么我的搜索功能返回错误相关字段查找无效:​​类别

基于每个条目的 Django Queryset 过滤

使用 Python/Django 上传大文件

我的 django 模板布尔变量在 javascript 中没有按预期工作

如何缓存 Django Rest Framework API 调用?

Ruby on Rails 会影响网页的外观吗?

is_valid() vs clean() Django 表单

Django admin:我可以定义字段顺序吗?

CherryPy 与 Django

Django 模板和变量属性

在 Celery 任务中运行 Scrapy 蜘蛛

Django:验证上传文件的文件类型

Django:在模块中实现 status字段的最佳方式

左加入 Django ORM

Django中'related_name'和'related_query_name'属性之间的区别?