87

私のdjangoを利用したアプリでは、「IntegrityError」が発生する明らかなケースが1つだけあります。
では、そのエラーをキャッチして、テンプレートを使用してメッセージを表示するにはどうすればよいでしょうか?

4

6 に答える 6

179

try と catch を使用するだけです。

from django.db import IntegrityError
from django.shortcuts import render_to_response

try:
    # code that produces error
except IntegrityError as e:
    return render_to_response("template.html", {"message": e.message})

必要に応じて、テンプレートでメッセージを使用できます。

編集

Jill-Jênn Vieに感謝します。ここで説明されているようe.__cause__に、を使用する必要があります。

于 2012-07-02T12:12:12.983 に答える
3

process_exception最も簡単な解決策: IntegrityError のみをキャッチし、レンダリングされたテンプレートで HttpResponse を返すミドルウェア実装を作成し、このミドルウェアがデフォルトのエラー処理ミドルウェアの後にあることを確認して、前に呼び出されるようにします ( https://docs.djangoproject.com/enを参照)。詳しくは/dev/topics/http/middleware/#process-exceptionを参照してください)。

もし私があなただったら、「"IntegrityError" が発生する明らかなケースは 1 つしかない」などとは思いません。そのため、ミドルウェアで例外をログに記録する (および電子メール アラートを送信する) ことを強くお勧めします。

于 2012-07-02T12:15:48.443 に答える