Django有built-in default views,当PermissionDenied
,Http404
,SuspiciousOperation
等异常被引发时,会自动使用它们。这是我喜欢的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
中的其他行为中的日志记录。重新实现所有这些只是为了将异常信息注入错误模板似乎有点愚蠢。