Excepciones Django

Django lanza algunas de sus propias excepciones así como excepciones estándar de Python.

Excepciones del núcleo de Django

Las clases de excepción del núcleo de Django están definidas en django.core.exceptions.

AppRegistryNotReady

exception AppRegistryNotReady[fuente]

Esta excepción se levanta cuando se intenta utilizar modelos antes de que el proceso de carga del proceso de carga de la aplicación esté completo, que inicializa ORM.

ObjectDoesNotExist

exception ObjectDoesNotExist[fuente]

La clase base para las excepciones Model.DoesNotExist. Un try/except para ObjectDoesNotExist capturará excepciones DoesNotExist para todos los modelos.

Ver: get().

EmptyResultSet

exception EmptyResultSet[fuente]

La excepción EmptyResultSet puede ser levantada durante la generación de consultas si una consulta no devolverá ningún resultado. La mayoría de los proyectos Django no encontrarán esta excepción, pero podría ser útil para implementar consultas y expresiones personalizadas.

FullResultSet

exception FullResultSet[fuente]

La excepción FullResultSet puede ser levantada durante la generación de consultas si una consulta coincidirá con todo. La mayoría de los proyectos Django no encontrarán esta excepción, pero podría ser útil para implementar consultas y expresiones personalizadas.

FieldDoesNotExist

exception FieldDoesNotExist[fuente]

La excepción FieldDoesNotExist se levanta por el método _meta.get_field() de un modelo cuando el campo solicitado no existe en el modelo o en los padres del modelo.

MultipleObjectsReturned

exception MultipleObjectsReturned[fuente]

La clase base para las excepciones Model.MultipleObjectsReturned. Un try/except para MultipleObjectsReturned capturará excepciones MultipleObjectsReturned para todos los modelos.

Ver: get().

SuspiciousOperation

exception SuspiciousOperation[fuente]

La excepción SuspiciousOperation se levanta cuando un usuario ha realizado una operación que debe considerarse sospechosa desde una perspectiva de seguridad, como manipular una cookie de sesión. Las subclases de SuspiciousOperation incluyen:

  • DisallowedHost

  • DisallowedModelAdminLookup

  • DisallowedModelAdminToField

  • DisallowedRedirect

  • InvalidSessionKey

  • RequestDataTooBig

  • Operación sospechosa de archivo

  • Formulario multiparte sospechoso

  • Sesión sospechosa

  • Demasiados campos enviados

  • Demasiados archivos enviados

Si una excepción Operación sospechosa llega al nivel del manipulador ASGI/WSGI, se registra a nivel de Error y resulta en una HttpResponseBadRequest. Consulte la documentación sobre registro para obtener más información.

Permiso denegado

exception PermissionDenied[fuente]

La excepción Permiso denegado se levanta cuando un usuario no tiene permiso para realizar la acción solicitada.

Vista inexistente

exception ViewDoesNotExist[fuente]

La excepción Vista inexistente se levanta por django.urls cuando una vista solicitada no existe.

MiddlewareNoUtilizado

exception MiddlewareNotUsed[fuente]

La excepción MiddlewareNoUtilizado se levanta cuando un middleware no está utilizado en la configuración del servidor.

ConfiguraciónInadecuada

exception ImproperlyConfigured[fuente]

La excepción ConfiguraciónInadecuada se levanta cuando Django está de alguna manera mal configurado – por ejemplo, si un valor en settings.py es incorrecto o no se puede parsear.

ErrorDeCampo

exception FieldError[fuente]

La excepción ErrorDeCampo se levanta cuando hay un problema con un campo del modelo. Esto puede suceder por varias razones:

  • Un campo en un modelo choca con un campo de mismo nombre desde una clase base abstracta

  • Se causa un bucle infinito al ordenar

  • Una palabra clave no se puede parsear de los parámetros del filtro

  • No se puede determinar un campo a partir de una palabra clave en los parámetros de consulta

  • Un join no está permitido en el campo especificado

  • El nombre de un campo es inválido

  • Una consulta contiene argumentos order_by no válidos

ValidationError

exception ValidationError[fuente]

La excepción ValidationError se levanta cuando los datos fallan en la validación de formulario o campo del modelo. Para obtener más información sobre la validación, consulte Form and Field Validation, Model Field Validation y el Validator Reference.

NON_FIELD_ERRORS

NON_FIELD_ERRORS

ValidationError que no pertenecen a un campo particular en un formulario o modelo se clasifican como NON_FIELD_ERRORS. Esta constante se utiliza como clave en diccionarios que de otra manera mapean campos a su lista correspondiente de errores.

BadRequest

exception BadRequest[fuente]

La excepción BadRequest se levanta cuando la solicitud no puede ser procesada debido a un error del cliente. Si una excepción BadRequest llega al nivel del manipulador ASGI/WSGI, resulta en un HttpResponseBadRequest.

RequestAborted

exception RequestAborted[fuente]

La traducción de los textos es la siguiente:

Es interno a los módulos de manejo HTTP y es poco probable que lo veas en otro lugar. Si estás modificando código de manejo HTTP, debes levantar esta excepción cuando encuentres una solicitud abortada para asegurarte de que el socket se cierre limpiamente.

OperaciónSóloSincrónica

exception SynchronousOnlyOperation[fuente]

La SolicitudAbortada excepción se levanta cuando código que solo está permitido en Python sincrónico es llamado desde un contexto asíncrono (un hilo con un bucle de eventos asíncronos en ejecución). Estas partes de Django dependen generalmente de la seguridad de hilos para funcionar y no funcionan correctamente bajo coroutines compartiendo el mismo hilo.

Si estás intentando llamar código que solo es sincrónico desde un hilo asíncrono, entonces crea un hilo sincrónico y llama a él en ese. Puedes lograr esto con asgiref.sync.sync_to_async().

Excepciones de resolución de URL

Las excepciones de resolución de URL están definidas en django.urls.

Resolver404

exception Resolver404[fuente]

La Resolver404 excepción se levanta por resolve() si el camino pasado a resolve() no se mapea a una vista. Es una subclase de django.http.Http404.

NoReverseMatch

exception NoReverseMatch[fuente]

La traducción de los textos es la siguiente:

Excepciones de base de datos

Las excepciones de base de datos pueden ser importadas desde django.db.

Django envuelve las excepciones de base de datos estándar para que tu código Django tenga una implementación común garantizada de estas clases.

exception Error[fuente]
exception InterfaceError[fuente]
exception DatabaseError[fuente]
exception DataError[fuente]
exception OperationalError[fuente]
exception IntegrityError[fuente]
exception InternalError[fuente]
exception ProgrammingError[fuente]
exception NotSupportedError[fuente]

Los wrappers de Django para excepciones de base de datos comportan exactamente lo mismo que las excepciones de base de datos subyacentes. Consulta PEP 249, la especificación de la API de bases de datos de Python v2.0, para obtener más información.

Según PEP 3134, se establece un atributo __cause__ con la excepción de base de datos original (subyacente), lo que permite acceder a cualquier información adicional proporcionada.

exception models.ProtectedError

Se levanta para prevenir la eliminación de objetos referenciados cuando se utiliza django.db.models.PROTECT. models.ProtectedError es una subclase de IntegrityError.

exception models.RestrictedError

Se levanta para prevenir la eliminación de objetos referenciados cuando se utiliza django.db.models.RESTRICT. models.RestrictedError es una subclase de IntegrityError.

Excepciones HTTP

Las excepciones HTTP pueden ser importadas desde django.http.

UnreadablePostError

exception UnreadablePostError[fuente]

UnreadablePostError se levanta cuando un usuario cancela una subida.

Excepciones de Sesiones

Las excepciones de sesiones están definidas en django.contrib.sessions.exceptions.

SessionInterrupted

exception SessionInterrupted[fuente]

SessionInterrupted se levanta cuando una sesión es destruida en una solicitud concurrente. Es una subclase de BadRequest.

Excepciones de Transacción

Las excepciones de transacción están definidas en django.db.transaction.

TransactionManagementError

exception TransactionManagementError[fuente]

TransactionManagementError se levanta por cualquier y todos los problemas relacionados con las transacciones de base de datos.

Testing Framework Excepciones

Excepciones proporcionadas por el paquete django.test.

ErrorDeRedireccionCiclica

exception client.RedirectCycleError

ErrorDeRedireccionCiclica se levanta cuando el cliente de pruebas detecta un bucle o una cadena demasiado larga de redirecciones.

Excepciones de Python

Django levanta excepciones de Python integradas cuando es apropiado. Consulte la documentación de Python para obtener más información sobre las Built-in Exceptions.