1

いくつかの処理を行うミドルウェアがあります。特定の条件では、例外が発生し、ユーザーには私の500.htmlテンプレートが表示されます-500httpステータスに正しく応答します。

ここで、いくつかの例外を除いて、デフォルトとは異なるテンプレートをレンダリングしたいと思います500.html。それを達成することは可能/どのように可能ですか?

4

3 に答える 3

2

これらの例外をキャッチし、HttpResponse オブジェクトを返して、カスタム テンプレートをレンダリングできます。または、リダイレクトも適切かもしれません。

于 2010-05-05T09:50:28.820 に答える
0

はいといいえ。

好きなようにレンダリングできます (Web サーバーには、それを行う方法についての適切な説明があります) が、ユーザーがそれを表示するかどうかは、ブラウザーの設定を通じて選択できます。何かをレンダリングすることはできますが、ブラウザには標準のエラー ページが表示されます。

于 2010-05-05T09:50:07.770 に答える
0

ミドルウェアが解決策になる可能性があります。

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',
于 2010-05-05T09:50:23.727 に答える