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