Djangoの例外
Djangoは、標準のPython例外だけでなく、独自の例外もいくつか発生します。
Djangoコアの例外
Djangoコア例外クラスはdjango.core.exceptions
で定義されています。
AppRegistryNotReady
- exception AppRegistryNotReady
- この例外は、ORMを初期化するアプリの読み込みプロセスが完了する前にモデルを使用しようとすると発生します。
ObjectDoesNotExist
- exception ObjectDoesNotExist
DoesNotExist 例外の基本クラス。
ObjectDoesNotExist
のtry/except
は、すべてのモデルの DoesNotExist 例外をキャッチします。ObjectDoesNotExist および DoesNotExist の詳細については、 get()を参照してください。
EmptyResultSet
- exception EmptyResultSet
EmptyResultSet
は、クエリが結果を返さない場合、クエリの生成中に発生する可能性があります。 ほとんどのDjangoプロジェクトではこの例外は発生しませんが、カスタムルックアップと式を実装するのに役立つ場合があります。
FieldDoesNotExist
- exception FieldDoesNotExist
FieldDoesNotExist
例外は、要求されたフィールドがモデルまたはモデルの親に存在しない場合に、モデルの_meta.get_field()
メソッドによって発生します。
MultipleObjectsReturned
- exception MultipleObjectsReturned
MultipleObjectsReturned 例外は、1つのオブジェクトのみが予期されているが、複数のオブジェクトが返される場合にクエリによって発生します。 この例外の基本バージョンは django.core.exceptions で提供されています。 各モデルクラスには、複数のオブジェクトを返した特定のオブジェクトタイプを識別するために使用できるサブクラス化されたバージョンが含まれています。
詳細については、 get()を参照してください。
SuspiciousOperation
- exception SuspiciousOperation
SuspiciousOperation 例外は、セッションCookieの改ざんなど、セキュリティの観点から疑わしいと見なされる操作をユーザーが実行した場合に発生します。
SuspiciousOperation
のサブクラスは次のとおりです。DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
RequestDataTooBig
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
TooManyFieldsSent
SuspiciousOperation
例外がWSGIハンドラーレベルに達すると、Error
レベルでログに記録され、 HttpResponseBadRequest になります。 詳細については、ロギングドキュメントを参照してください。
PermissionDenied
- exception PermissionDenied
- PermissionDenied 例外は、ユーザーが要求されたアクションを実行する権限を持っていない場合に発生します。
ViewDoesNotExist
- exception ViewDoesNotExist
- ViewDoesNotExist 例外は、要求されたビューが存在しない場合に django.urls によって発生します。
ImproperlyConfigured
- exception ImproperlyConfigured
- ImpproperlyConfigured 例外は、Djangoが何らかの理由で不適切に構成されている場合、たとえば
settings.py
の値が正しくないか解析できない場合に発生します。
FieldError
- exception FieldError
- モデルフィールドに問題がある場合、 FieldError 例外が発生します。 これはいくつかの理由で発生する可能性があります。
- モデル内のフィールドが、抽象基本クラスの同じ名前のフィールドと衝突します
- 無限ループは順序付けによって発生します
- フィルタパラメータからキーワードを解析できません
- クエリパラメータのキーワードからフィールドを特定できません
- 指定されたフィールドへの結合は許可されていません
- フィールド名が無効です
- クエリに無効なorder_by引数が含まれています
ValidationError
- exception ValidationError
- ValidationError 例外は、データがフォームまたはモデルフィールドの検証に失敗した場合に発生します。 検証の詳細については、フォームとフィールドの検証、モデルフィールドの検証、およびバリデーターリファレンスを参照してください。
NON_FIELD_ERRORS
- NON_FIELD_ERRORS
フォームまたはモデルの特定のフィールドに属さないValidationError
は、NON_FIELD_ERRORS
として分類されます。 この定数は、フィールドをそれぞれのエラーリストにマップする辞書のキーとして使用されます。
URLリゾルバーの例外
URLリゾルバーの例外はdjango.urls
で定義されています。
Resolver404
- exception Resolver404
- Resolver404 例外は、
resolve()
に渡されたパスがビューにマップされていない場合、 resolve()によって発生します。 これは django.http.Http404 のサブクラスです。
NoReverseMatch
- exception NoReverseMatch
- NoReverseMatch 例外は、指定されたパラメーターに基づいてURLconf内の一致するURLを識別できない場合、 django.urls によって発生します。
データベースの例外
データベース例外はdjango.db
からインポートできます。
Djangoは、標準のデータベース例外をラップして、Djangoコードにこれらのクラスの共通実装が保証されるようにします。
- exception Error
- exception InterfaceError
- exception DatabaseError
- exception DataError
- exception OperationalError
- exception IntegrityError
- exception InternalError
- exception ProgrammingError
- exception NotSupportedError
データベース例外のDjangoラッパーは、基になるデータベース例外とまったく同じように動作します。 詳細については、 PEP 249 、PythonデータベースAPI仕様v2.0を参照してください。
PEP 3134 に従って、__cause__
属性が元の(基になる)データベース例外とともに設定され、提供された追加情報へのアクセスを許可します。
- exception models.ProtectedError
django.db.models.PROTECT を使用するときに参照されるオブジェクトが削除されないようにするために発生しました。 models.ProtectedError は、 IntegrityError のサブクラスです。
Http例外
Http例外はdjango.http
からインポートできます。
トランザクションの例外
トランザクション例外はdjango.db.transaction
で定義されています。
TransactionManagementError
- exception TransactionManagementError
- TransactionManagementError は、データベーストランザクションに関連するすべての問題に対して発生します。
フレームワークの例外のテスト
django.test
パッケージによって提供される例外。
RedirectCycleError
- exception client.RedirectCycleError
- RedirectCycleError は、テストクライアントがループまたはリダイレクトの長すぎるチェーンを検出したときに発生します。
Pythonの例外
Djangoは、必要に応じて組み込みのPython例外も発生させます。 bltin-exceptions の詳細については、Pythonのドキュメントを参照してください。