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