いくつかの処理を行うミドルウェアがあります。特定の条件では、例外が発生し、ユーザーには私の500.html
テンプレートが表示されます-500httpステータスに正しく応答します。
ここで、いくつかの例外を除いて、デフォルトとは異なるテンプレートをレンダリングしたいと思います500.html
。それを達成することは可能/どのように可能ですか?
いくつかの処理を行うミドルウェアがあります。特定の条件では、例外が発生し、ユーザーには私の500.html
テンプレートが表示されます-500httpステータスに正しく応答します。
ここで、いくつかの例外を除いて、デフォルトとは異なるテンプレートをレンダリングしたいと思います500.html
。それを達成することは可能/どのように可能ですか?
これらの例外をキャッチし、HttpResponse オブジェクトを返して、カスタム テンプレートをレンダリングできます。または、リダイレクトも適切かもしれません。
はいといいえ。
好きなようにレンダリングできます (Web サーバーには、それを行う方法についての適切な説明があります) が、ユーザーがそれを表示するかどうかは、ブラウザーの設定を通じて選択できます。何かをレンダリングすることはできますが、ブラウザには標準のエラー ページが表示されます。
ミドルウェアが解決策になる可能性があります。
class MyExceptionMiddleware:
def process_exception(self, request, exception):
if isinstance(exception, CustomException):
template = loader.get_template('Other500.html')
context = RequestContext(request, {'message': 'Custom Message'})
return HttpResponseForbidden(template.render(context))
return None
ミドルウェアを settings.py に登録することを忘れないでください:
MIDDLEWARE_CLASSES = (
....
'app.middleware.MyExceptionMiddleware',