Django:如何在错误处理程序中获取异常实例

时间:2015-06-25 15:51:03

标签: python django error-handling django-middleware django-errors

Django有built-in default views,当PermissionDeniedHttp404SuspiciousOperation等异常被引发时,会自动使用它们。这是我喜欢的Django的一个方便功能,但似乎有一个限制。

我正在使用以下消息提出异常:raise PermissionDenied('You are not an xyz and have no access to foobar')

是否有一个上下文变量,其中包含原始错误处理程序调用的模板中可用的原始异常实例(即403.html),以便我可以访问该消息?

如果没有,是否可以使用自定义处理程序(settings.handler403等)保留原始异常,以便将其注入上下文?

注意:我相信我可以使用process_exception创建自定义中间件,但我想尽可能避免这种情况,因为我的猜测是我会复制很多现有的Django逻辑并且它更干净重用它。此外,看起来自定义process_exception会覆盖django.core.handlers.base中的其他行为中的日志记录。重新实现所有这些只是为了将异常信息注入错误模板似乎有点愚蠢。

1 个答案:

答案 0 :(得分:1)

此功能已实施为ticket 24733

在Django 1.9及更高版本中,异常将传递给error handlers