Djangoの例外—Djangoのドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/exceptions
移動先:案内検索

Djangoの例外

Djangoは、標準のPython例外だけでなく、独自の例外もいくつか発生します。

Djangoコアの例外

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

AppRegistryNotReady

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


ObjectDoesNotExist

exception ObjectDoesNotExist

Model.DoesNotExist 例外の基本クラス。 ObjectDoesNotExisttry/exceptは、すべてのモデルの DoesNotExist 例外をキャッチします。

get()を参照してください。


EmptyResultSet

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


FieldDoesNotExist

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


MultipleObjectsReturned

exception MultipleObjectsReturned

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

get()を参照してください。


SuspiciousOperation

exception SuspiciousOperation

SuspiciousOperation 例外は、セッションCookieの改ざんなど、セキュリティの観点から疑わしいと見なされる操作をユーザーが実行した場合に発生します。 SuspiciousOperationのサブクラスは次のとおりです。

  • DisallowedHost

  • DisallowedModelAdminLookup

  • DisallowedModelAdminToField

  • DisallowedRedirect

  • InvalidSessionKey

  • RequestDataTooBig

  • SuspiciousFileOperation

  • SuspiciousMultipartForm

  • SuspiciousSession

  • TooManyFieldsSent

SuspiciousOperation例外がASGI / WSGIハンドラーレベルに達すると、Errorレベルでログに記録され、 HttpResponseBadRequest になります。 詳細については、ロギングドキュメントを参照してください。


PermissionDenied

exception PermissionDenied
PermissionDenied 例外は、ユーザーが要求されたアクションを実行する権限を持っていない場合に発生します。


ViewDoesNotExist

exception ViewDoesNotExist
ViewDoesNotExist 例外は、要求されたビューが存在しない場合に django.urls によって発生します。


MiddlewareNotUsed

exception MiddlewareNotUsed
サーバー構成でミドルウェアが使用されていない場合、 MiddlewareNotUsed 例外が発生します。


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として分類されます。 この定数は、フィールドをそれぞれのエラーリストにマップする辞書のキーとして使用されます。


BadRequest

exception BadRequest

バージョン3.2の新機能。

BadRequest 例外は、クライアントエラーのためにリクエストを処理できない場合に発生します。 BadRequest例外がASGI / WSGIハンドラーレベルに達すると、 HttpResponseBadRequest になります。


RequestAborted

exception RequestAborted

RequestAborted 例外は、ハンドラーによって読み込まれているHTTPボディが途中で切断されてクライアント接続が閉じられた場合、またはクライアントがデータを送信せずにサーバーが接続を閉じるタイムアウトに達した場合に発生します。

これはHTTPハンドラーモジュールの内部にあり、他の場所で表示される可能性はほとんどありません。 HTTP処理コードを変更している場合、ソケットが正常に閉じられていることを確認するために、中止された要求が発生したときにこれを発生させる必要があります。


SynchronousOnlyOperation

exception SynchronousOnlyOperation

SynchronousOnlyOperation 例外は、同期Pythonコードでのみ許可されるコードが非同期コンテキスト(非同期イベントループが実行されているスレッド)から呼び出された場合に発生します。 Djangoのこれらの部分は、通常、スレッドセーフに大きく依存して機能し、同じスレッドを共有するコルーチンでは正しく機能しません。

非同期スレッドから同期のみのコードを呼び出そうとしている場合は、同期スレッドを作成してその中で呼び出します。 これは、 asgiref.sync.sync_to_async()を使用して実現できます。


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 のサブクラスです。

exception models.RestrictedError

django.db.models.RESTRICT を使用するときに参照オブジェクトが削除されないようにするために発生しました。 models.RestrictedError は、 IntegrityError のサブクラスです。


Http例外

Http例外はdjango.httpからインポートできます。

UnreadablePostError

exception UnreadablePostError
Un読み取り可能PostError は、ユーザーがアップロードをキャンセルすると発生します。


セッションの例外

セッションの例外はdjango.contrib.sessions.exceptionsで定義されています。

SessionInterrupted

exception SessionInterrupted

バージョン3.2の新機能。

SessionInterrupted は、同時リクエストでセッションが破棄されると発生します。 BadRequest のサブクラスです。


トランザクションの例外

トランザクション例外はdjango.db.transactionで定義されています。

TransactionManagementError

exception TransactionManagementError
TransactionManagementError は、データベーストランザクションに関連するすべての問題に対して発生します。


フレームワークの例外のテスト

django.testパッケージによって提供される例外。

RedirectCycleError

exception client.RedirectCycleError
RedirectCycleError は、テストクライアントがループまたはリダイレクトの長すぎるチェーンを検出したときに発生します。


Pythonの例外

Djangoは、必要に応じて組み込みのPython例外も発生させます。 bltin-exceptions の詳細については、Pythonのドキュメントを参照してください。