# Django 5.2.8 ドキュメント

# Django の例外

Django は普通の Python の例外の他に、いくつか独自の例外も起こします。

## Django Core 例外

Django core 例外クラスは `django.core.exceptions` で定義されています。

### `AppRegistryNotReady`

exception AppRegistryNotReady

  この例外は、ORM を初期化する アプリケーション読み込みプロセス が完了する前にモデルを使用しようとしたときに発生します。

### `ObjectDoesNotExist`

exception ObjectDoesNotExist

  `Model.DoesNotExist` 例外の基底クラスです。`ObjectDoesNotExist` のための `try/except` は、すべてのモデルの `DoesNotExist` 例外をキャッチします。

  See `get()`.

### `ObjectNotUpdated`

New in Django 6.0.

exception ObjectNotUpdated

  The base class for `Model.NotUpdated` exceptions. A `try/except` for `ObjectNotUpdated` will catch `NotUpdated` exceptions for all models.

  See `save()`.

### `EmptyResultSet`

exception EmptyResultSet

  `EmptyResultSet` は、クエリが何も結果を返さない場合に、クエリ生成時に発生する可能性があります。ほとんどの Django プロジェクトでは、この例外に遭遇することはないでしょうが、カスタムルックアップや式を実装する際に役立つかもしれません。

### `FullResultSet`

exception FullResultSet

  `FullResultSet` は、クエリが全てに一致する場合に、クエリ生成中に発生する可能性があります。ほとんどの Django プロジェクトではこの例外に遭遇することはありませんが、カスタムルックアップや式を実装する際に役立つかもしれません。

### `FieldDoesNotExist`

exception FieldDoesNotExist

  モデルの `_meta.get_field()` メソッドによって、リクエストされたフィールドがモデルまたはモデルの親に存在しない場合、 `FieldDoesNotExist` 例外が発生します。

### `MultipleObjectsReturned`

exception MultipleObjectsReturned

  `Model.MultipleObjectsReturned` 例外の基底クラスです。`MultipleObjectsReturned` の `try/except` は、すべてのモデルの `MultipleObjectsReturned` 例外をキャッチします。

  See `get()`.

### `SuspiciousOperation`

exception SuspiciousOperation

  `SuspiciousOperation` 例外は、セッションクッキーの改ざんなど、セキュリティの観点から疑わしいとみなされる操作をユーザーが行った場合に発生します。 `SuspiciousOperation` のサブクラスには以下が含まれます:

  - `DisallowedHost`

  - `DisallowedModelAdminLookup`

  - `DisallowedModelAdminToField`

  - `DisallowedRedirect`

  - `InvalidSessionKey`

  - `RequestDataTooBig`

  - `SuspiciousFileOperation`

  - `SuspiciousMultipartForm`

  - `SuspiciousSession`

  - `TooManyFieldsSent`

  - `TooManyFilesSent`

  もし `SuspiciousOperation` 例外が ASGI/WSGI ハンドラレベルに達した場合、`Error` レベルでログ記録され、 `HttpResponseBadRequest` が結果として返されます。 詳細については、ロギングのドキュメント を参照してください。

### `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) のより詳しい情報については、フォームとフィールドのバリデーション や モデルフィールドのバリデーション、バリデータのリファレンス を参照してください。

#### `NON_FIELD_ERRORS`

NON_FIELD_ERRORS

`ValidationError` でフォームやモデルの特定のフィールドに属さないものは、 `NON_FIELD_ERRORS` として分類されます。この定数は、他のフィールドをそれぞれのエラーリストにマッピングする辞書でキーとして使用されます。

### `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

  The `Resolver404` exception is raised by `resolve()` if the path passed to `resolve()` doesn't map to a view. It's a subclass of `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 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 を読んでください。