Django genera algunas de sus propias excepciones, así como las excepciones estándar de Python.

Excepciones del núcleo de Django

Las clases de excepción del núcleo de Django se definen en django.core.exceptions.

AppRegistryNotReady

exception AppRegistryNotReady[source]

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

ObjectDoesNotExist

exception ObjectDoesNotExist[source]

La clase base para Model.DoesNotExist excepciones. A try/except por ObjectDoesNotExist cogerá DoesNotExist excepciones para todos los modelos.

Ver get().

EmptyResultSet

exception EmptyResultSet[source]

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

FieldDoesNotExist

exception FieldDoesNotExist[source]

los FieldDoesNotExist la excepción es provocada por un modelo _meta.get_field() método cuando el campo solicitado no existe en el modelo o en los padres del modelo.

MultipleObjectsReturned

exception MultipleObjectsReturned[source]

La clase base para Model.MultipleObjectsReturned excepciones. A try/except por MultipleObjectsReturned cogerá MultipleObjectsReturned excepciones para todos los modelos.

Ver get().

SuspiciousOperation

exception SuspiciousOperation[source]

los SuspiciousOperation Se genera una excepción cuando un usuario ha realizado una operación que debería considerarse sospechosa desde una perspectiva de seguridad, como la manipulación de una cookie de sesión. Subclases de SuspiciousOperation incluir:

  • DisallowedHost
  • DisallowedModelAdminLookup
  • DisallowedModelAdminToField
  • DisallowedRedirect
  • InvalidSessionKey
  • RequestDataTooBig
  • SuspiciousFileOperation
  • SuspiciousMultipartForm
  • SuspiciousSession
  • TooManyFieldsSent

Si un SuspiciousOperation la excepción alcanza el nivel de controlador ASGI / WSGI se registra en el Error nivel y resulta en un HttpResponseBadRequest. Ver el documentación de registro para más información.

PermissionDenied

exception PermissionDenied[source]

los PermissionDenied Se genera una excepción cuando un usuario no tiene permiso para realizar la acción solicitada.

ViewDoesNotExist

exception ViewDoesNotExist[source]

los ViewDoesNotExist la excepción es provocada por django.urls cuando una vista solicitada no existe.

MiddlewareNotUsed

exception MiddlewareNotUsed[source]

los MiddlewareNotUsed Se genera una excepción cuando no se utiliza un middleware en la configuración del servidor.

ImproperlyConfigured

exception ImproperlyConfigured[source]

los ImproperlyConfigured se genera una excepción cuando Django está configurado incorrectamente de alguna manera, por ejemplo, si un valor en settings.py es incorrecto o no se puede analizar.

FieldError

exception FieldError[source]

los FieldError se genera una excepción cuando hay un problema con un campo de modelo. Esto puede suceder por varias razones:

  • Un campo en un modelo choca con un campo del mismo nombre de una clase base abstracta
  • Un bucle infinito es causado por ordenar
  • No se puede analizar una palabra clave a partir de los parámetros del filtro.
  • No se puede determinar un campo a partir de una palabra clave en los parámetros de consulta.
  • No se permite una unión en el campo especificado
  • Un nombre de campo no es válido
  • Una consulta contiene argumentos order_by no válidos

ValidationError

exception ValidationError[source]

los ValidationError se genera una excepción cuando los datos fallan en la validación del campo del formulario o del modelo. Para obtener más información sobre la validación, consulte Validación de formulario y campo, Validación del campo del modelo y el Referencia del validador.

NON_FIELD_ERRORS

NON_FIELD_ERRORS

ValidationErrorLos correos electrónicos que no pertenecen a un campo en particular en un formulario o modelo se clasifican como NON_FIELD_ERRORS. Esta constante se utiliza como key en diccionarios que, de lo contrario, asignan campos a su respectiva lista de errores.

BadRequest

exception BadRequest[source]
Nuevo en Django 3.2.

los BadRequest Se genera una excepción cuando la solicitud no se puede procesar debido a un error del cliente. Si un BadRequest La excepción alcanza el nivel de controlador ASGI / WSGI que da como resultado una HttpResponseBadRequest.

RequestAborted

exception RequestAborted[source]

los RequestAborted Se genera una excepción cuando un cuerpo HTTP que está leyendo el controlador se corta a mitad de camino y la conexión del cliente se cierra, o cuando el cliente no envía datos y alcanza un tiempo de espera en el que el servidor cierra la conexión.

Es interno a los módulos del controlador HTTP y es poco probable que lo vea en otro lugar. Si está modificando el código de manejo de HTTP, debe plantearlo cuando encuentre una solicitud abortada para asegurarse de que el socket esté bien cerrado.

SynchronousOnlyOperation

exception SynchronousOnlyOperation[source]

los SynchronousOnlyOperation Se genera una excepción cuando el código que solo está permitido en el código Python sincrónico se llama desde un contexto asincrónico (un hilo con un bucle de eventos asincrónico en ejecución). Estas partes de Django generalmente dependen en gran medida de la seguridad de los subprocesos para funcionar y no funcionan correctamente en corutinas que comparten el mismo subproceso.

Si está intentando llamar a un código que es solo sincrónico desde un subproceso asincrónico, cree un subproceso sincrónico y llámelo así. Puedes lograr esto con asgiref.sync.sync_to_async().

Excepciones del solucionador de URL

Las excepciones de URL Resolver se definen en django.urls.

Resolver404

exception Resolver404

los Resolver404 la excepción es provocada por resolve() si el camino pasara a resolve() no se asigna a una vista. Es una subclase de django.http.Http404.

NoReverseMatch

exception NoReverseMatch

los NoReverseMatch la excepción es provocada por django.urls cuando una URL coincidente en su URLconf no se puede identificar en función de los parámetros proporcionados.

Excepciones de la base de datos

Las excepciones de la base de datos se pueden importar desde django.db.

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

exception Error
exception InterfaceError
exception DatabaseError
exception DataError
exception OperationalError
exception IntegrityError
exception InternalError
exception ProgrammingError
exception NotSupportedError

Los contenedores de Django para excepciones de bases de datos se comportan exactamente igual que las excepciones de bases de datos subyacentes. Ver PEP 249, la especificación de la API de la base de datos de Python v2.0, para obtener más información.

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

exception models.ProtectedError

Criado para evitar la eliminación de los objetos a los que se hace referencia cuando se usa django.db.models.PROTECT. models.ProtectedError es una subclase de IntegrityError.

exception models.RestrictedError

Criado para evitar la eliminación de los objetos a los que se hace referencia cuando se usa django.db.models.RESTRICT. models.RestrictedError es una subclase de IntegrityError.

Excepciones Http

Las excepciones HTTP se pueden importar desde django.http.

UnreadablePostError

exception UnreadablePostError

UnreadablePostError se genera cuando un usuario cancela una carga.

Excepciones de sesiones

Las excepciones de sesiones se definen en django.contrib.sessions.exceptions.

SessionInterrupted

exception SessionInterrupted[source]
Nuevo en Django 3.2.

SessionInterrupted se genera cuando se destruye una sesión en una solicitud concurrente. Es una subclase de BadRequest.

Excepciones de transacciones

Las excepciones de transacciones se definen en django.db.transaction.

TransactionManagementError

exception TransactionManagementError

TransactionManagementError se plantea para todos y cada uno de los problemas relacionados con las transacciones de la base de datos.

Prueba de excepciones del marco

Excepciones proporcionadas por el django.test paquete.

RedirectCycleError

exception client.RedirectCycleError

RedirectCycleError se genera cuando el cliente de prueba detecta un bucle o una cadena de redireccionamientos demasiado larga.

Excepciones de Python

Django también genera excepciones integradas de Python cuando es apropiado. Consulte la documentación de Python para obtener más información sobre el Excepciones integradas.