3

Django には組み込みのデフォルト ビュー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例外情報をエラー テンプレートに挿入するためだけにすべてを再実装するのは、ばかげているように思えました。

4

1 に答える 1