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