| revision-up-to: | 17812 (1.4) |
|---|
Django は多くの Python 標準の例外に加え、いくつかの Django 固有の例外を送出します。
DoesNotExist¶ObjectDoesNotExist¶DoesNotExist 例外は指定されたクエリーパラメータでオブジェクトが
見つからなかったときに送出されます。
ObjectDoesNotExist は django.core.exceptions
の中で定義されています。DoesNotExist は、ObjectDoesNotExist
例外をベースにしたサブクラスです。これは、どのタイプのオブジェクトを
見つけられなかったのかを特定する手段として全モデルクラスで提供されています
(訳注: モデルクラス Foo と Bar がある場合、 Foo.DoesNotExist
および Bar.DoesNotExist という ObjectDoesNotExist
を継承したクラスが定義されます)。
ObjectDoesNotExist と DoesNotExist のさらなる情報について、
get() を参照してください。
MultipleObjectsReturned¶MultipleObjectsReturned 例外は、一つのオブジェクトが期待されるにも
関わらず複数のオブジェクトが得られた場合に、クエリーによって送出されます。
この例外のベースとなるバージョンは django.core.exceptions の中で
定義されています。そして各モデルクラスはそれをサブクラス化した例外を
含んでおり、どのタイプのオブジェクトが複数のオブジェクトを
返したのかを特定するために使えます
(訳注: モデルクラス Foo と Bar がある場合、送出された例外が
Foo.MultipleObjectsReturned であれば複数の Foo のオブジェクトが
返されたと判断できます)。
さらなる情報について get()
を参照してください。
SuspiciousOperation¶SuspiciousOperation 例外は、セキュリティ観点上、不審と考えられる
操作をユーザが行った場合に送出されます。たとえば、セッションクッキーが
改変された場合などです。
PermissionDenied¶PermissionDenied 例外は、要求したアクションを実行する権限をユーザが
持っていない場合に送出されます。
ViewDoesNotExist¶ViewDoesNotExist 例外は、要求されたビューが存在しない場合に
django.core.urlresolvers によって送出されます。
MiddlewareNotUsed¶MiddlewareNotUsed 例外は、サーバ設定にあるミドルウェアの中に
使われていないものがある場合に送出されます。
ImproperlyConfigured¶ImproperlyConfigured 例外は、 Django の設定の何かが正しくない場合に
送出されます – たとえば settings.py の値が不正であったり、
書式不正である場合が挙げられます。
FieldError¶FieldError 例外は、モデルのフィールドに関係した問題がある場合に
送出されます。いくつかの理由が考えられるます:
ValidationError¶ValidationError 例外は、フォームやモデルフィールドの検証 (validation)
に失敗した場合に送出されます。検証についての詳細は
フォームやフィールドの検証 、
モデルフィールドの検証 、そして
バリデータのリファレンス を参照してください。
NoReverseMatch¶NoReverseMatch 例外は、指定パラメータに適合する URL を URLconf
から特定できなかった場合に django.core.urlresolvers
によって送出されます。
Django は標準 (訳注: PEP 249) のデータベース例外である DatabaseError と
IntegrityError をラッピングするため、ユーザは Django 用のコードにて
これらのクラスの共通の実装を利用できます。これらのデータベース例外は
django.db の中で定義されています。
(訳注: Django は標準 PEP 249 に従って例外クラスを定義しており、どのデータベース
バックエンドを利用する場合でもこれらを使用します。なおこれらの例外は、
送出のきっかけになった「データベースバックエンドが送出した例外オブジェクト」を
ラッピングする、つまり属性を引き継ぎます。)
DatabaseError¶IntegrityError¶Django のデータベース例外用のラッパーは、元になったデータベース例外と完全に 同じ振る舞いをします。さらなる情報については Python データベース API 仕様 v2.0 (PEP 249) を参照してください。
TransactionManagementError¶TransactionManagementError は、データベーストランザクションに関係した
あらゆる問題に対して送出されます。このクラスは
django.db.transaction の中で定義されています。
Django は、 Python 標準の例外を送出した方が適切な場面においては、そうします。
さらなる情報については Python のドキュメントで標準 exceptions
を参照してください。
Oct 26, 2017