Django の例外Link to this heading
Django は普通の Python の例外の他に、いくつか独自の例外も起こします。
Django Core 例外Link to this heading
Django core 例外クラスは django.core.exceptions で定義されています。
AppRegistryNotReadyLink to this heading
- exception AppRegistryNotReadyLink to this definition
この例外は、ORM を初期化する アプリケーション読み込みプロセス が完了する前にモデルを使用しようとしたときに発生します。
ObjectDoesNotExistLink to this heading
- exception ObjectDoesNotExistLink to this definition
Model.DoesNotExist例外の基底クラスです。ObjectDoesNotExistのためのtry/exceptは、すべてのモデルのDoesNotExist例外をキャッチします。get()を参照してください。
EmptyResultSetLink to this heading
- exception EmptyResultSetLink to this definition
EmptyResultSetは、クエリが何も結果を返さない場合に、クエリ生成時に発生する可能性があります。ほとんどの Django プロジェクトでは、この例外に遭遇することはないでしょうが、カスタムルックアップや式を実装する際に役立つかもしれません。
FullResultSetLink to this heading
- exception FullResultSetLink to this definition
FullResultSetは、クエリが全てに一致する場合に、クエリ生成中に発生する可能性があります。ほとんどの Django プロジェクトではこの例外に遭遇することはありませんが、カスタムルックアップや式を実装する際に役立つかもしれません。
FieldDoesNotExistLink to this heading
- exception FieldDoesNotExistLink to this definition
モデルの
_meta.get_field()メソッドによって、リクエストされたフィールドがモデルまたはモデルの親に存在しない場合、FieldDoesNotExist例外が発生します。
MultipleObjectsReturnedLink to this heading
- exception MultipleObjectsReturnedLink to this definition
Model.MultipleObjectsReturned例外の基底クラスです。MultipleObjectsReturnedのtry/exceptは、すべてのモデルのMultipleObjectsReturned例外をキャッチします。get()を参照してください。
SuspiciousOperationLink to this heading
- exception SuspiciousOperationLink to this definition
SuspiciousOperation例外は、セッションクッキーの改ざんなど、セキュリティの観点から疑わしいとみなされる操作をユーザーが行った場合に発生します。SuspiciousOperationのサブクラスには以下が含まれます:DisallowedHostDisallowedModelAdminLookupDisallowedModelAdminToFieldDisallowedRedirectInvalidSessionKeyRequestDataTooBigSuspiciousFileOperationSuspiciousMultipartFormSuspiciousSessionTooManyFieldsSentTooManyFilesSent
もし
SuspiciousOperation例外が ASGI/WSGI ハンドラレベルに達した場合、Errorレベルでログ記録され、HttpResponseBadRequestが結果として返されます。 詳細については、ロギングのドキュメント を参照してください。
PermissionDeniedLink to this heading
- exception PermissionDeniedLink to this definition
PermissionDenied例外は、ユーザーにリクエストされたアクションを実行する権限がない場合に発生します。
ViewDoesNotExistLink to this heading
- exception ViewDoesNotExistLink to this definition
ViewDoesNotExist例外は、リクエストされたビューが存在しないい場合に、django.urlsによって発生します。
MiddlewareNotUsedLink to this heading
- exception MiddlewareNotUsedLink to this definition
MiddlewareNotUsed例外は、サーバーの設定の中でミドルウェアが使用されなかった時に発生します。
ImproperlyConfiguredLink to this heading
- exception ImproperlyConfiguredLink to this definition
ImproperlyConfigured例外は、Django が何らかの点で不適切に設定されている場合に発生します。たとえば、settings.pyに含まれる値が不正であったり、パースできないような場合が考えられます。
FieldErrorLink to this heading
- exception FieldErrorLink to this definition
FieldError例外は、モデルのフィールドに問題がある時に発生します。発生理由としては、次のようないくつかの理由が考えられます。モデル内のフィールドが、抽象基底クラスからの同名のフィールドと衝突しています
ソートによって無限ループが起こります
フィルタパラメータからキーワードを解析できません
クエリパラメータのキーワードからは、フィールドを特定できません
指定されたフィールドに対する結合は許可されていません
フィールド名が無効です
クエリに無効な order_by 引数が含まれています
ValidationErrorLink to this heading
- exception ValidationErrorLink to this definition
ValidationError例外は、データがフォームまたはモデルのフィールド検証に失敗すると発生します。検証 (validation) のより詳しい情報については、フォームとフィールドのバリデーション や モデルフィールドのバリデーション、バリデータのリファレンス を参照してください。
NON_FIELD_ERRORSLink to this heading
- NON_FIELD_ERRORSLink to this definition
ValidationError でフォームやモデルの特定のフィールドに属さないものは、 NON_FIELD_ERRORS として分類されます。この定数は、他のフィールドをそれぞれのエラーリストにマッピングする辞書でキーとして使用されます。
BadRequestLink to this heading
- exception BadRequestLink to this definition
BadRequest例外は、クライアントエラーによりリクエストを処理できない場合に発生します。BadRequest例外が ASGI/WSGI ハンドラレベルに到達すると、HttpResponseBadRequestが結果として返されます。
RequestAbortedLink to this heading
- exception RequestAbortedLink to this definition
RequestAborted例外は、ハンドラによって読み込まれた HTTP ボディが途中で切断され、クライアント接続が閉じられるか、またはクライアントがデータを送信せず、サーバーが接続を閉じるタイムアウトに達したときに発生します。これはHTTPハンドラーモジュール内部のもので、他の場所で見ることはまずありません。HTTP処理コードを変更している場合、ソケットがクリーンに閉じられるように、中断されたリクエストに遭遇した際にはこれを発生させるべきです。
SynchronousOnlyOperationLink to this heading
- exception SynchronousOnlyOperationLink to this definition
SynchronousOnlyOperation例外は、同期的な Python コードでのみ許可されているコードが、実行中の非同期イベントループを持つスレッドから非同期コンテキストで呼び出されたときに発生します。Django のこれらの部分は、一般に機能するためにスレッドセーフに大きく依存しており、同じスレッドを共有するコルーチンの下では正しく動作しません。非同期スレッドから同期専用のコードを呼び出そうとしている場合は、同期スレッドを作成し、その中で呼び出してください。これは、
asgiref.sync.sync_to_async()を使用して実現できます。
URL Resolver の例外Link to this heading
URL Resolver の例外は django.urls で定義されています。
Resolver404Link to this heading
- exception Resolver404Link to this definition
Resolver404例外は、resolve()に渡されたパスがビューにマッピングされていない場合に、resolve()によって発生します。これはdjango.http.Http404のサブクラスです。
NoReverseMatchLink to this heading
- exception NoReverseMatchLink to this definition
NoReverseMatch例外は、提供されたパラメータに基づいてURLconf内の一致するURLを特定できない場合に、django.urlsによって発生します。
データベースの例外Link to this heading
データベースの例外は django.db からインポートできます。
Django は標準のデータベース例外をラップしており、これによって Django コードにはこれらのクラスの共通の実装が保証されます。
- exception ErrorLink to this definition
- exception InterfaceErrorLink to this definition
- exception DatabaseErrorLink to this definition
- exception DataErrorLink to this definition
- exception OperationalErrorLink to this definition
- exception IntegrityErrorLink to this definition
- exception InternalErrorLink to this definition
- exception ProgrammingErrorLink to this definition
- exception NotSupportedErrorLink to this definition
Djangoのデータベース例外のラッパーは、基になるデータベース例外と全く同じ動作をします。詳細については、 PEP 249 、Python Database API Specification v2.0 を参照してください。
PEP 3134 に従って、 __cause__ 属性が、追加情報へのアクセスを可能にする元の(ベースとなる)データベース例外とともに設定されます。
- exception models.ProtectedErrorLink to this definition
参照されているオブジェクトの削除を防ぐために発生させられる django.db.models.PROTECT を使用しています。 models.ProtectedError は IntegrityError のサブクラスです。
- exception models.RestrictedErrorLink to this definition
django.db.models.RESTRICT を使用して参照されているオブジェクトの削除を防ぐために発生します。 models.RestrictedError は IntegrityError のサブクラスです。
HTTP 例外Link to this heading
HTTPの例外は django.http からインポートできます。
UnreadablePostErrorLink to this heading
- exception UnreadablePostErrorLink to this definition
UnreadablePostErrorは、ユーザーがアップロードをキャンセルすると発生します。
セッションの例外Link to this heading
セッションの例外は django.contrib.sessions.exceptions で定義されています。
SessionInterruptedLink to this heading
- exception SessionInterruptedLink to this definition
SessionInterruptedは、並行リクエストでセッションが破棄された場合に発生します。これはBadRequestのサブクラスです。
トランザクションの例外Link to this heading
トランザクションの例外は django.db.transaction で定義されています。
TransactionManagementErrorLink to this heading
- exception TransactionManagementErrorLink to this definition
TransactionManagementErrorが発生するのは、データベースのトランザクションに関するあらゆる問題に対してです。
テストフレームワークの例外Link to this heading
django.test パッケージが提供する例外です。
RedirectCycleErrorLink to this heading
- exception client.RedirectCycleErrorLink to this definition
RedirectCycleErrorは、テストクライアントがループまたは過度に長いリダイレクトの連結を検出した時に発生します。
Python の例外Link to this heading
Django は、十分適切な場合にはビルトインの Python の例外を起こします。詳しい情報については、Python のドキュメント Built-in Exceptions を読んでください。