Django Exceptions
Django raises some of its own exceptions as well as standard Python exceptions.
Django Core Exceptions
Django core exception classes are defined in django.core.exceptions
.
AppRegistryNotReady
- exception
AppRegistryNotReady
[源代码] - This exception is raised when attempting to use models before the apploading process, which initializes the ORM, iscomplete.
ObjectDoesNotExist
- exception
ObjectDoesNotExist
[源代码] - The base class for
DoesNotExist
exceptions;atry/except
forObjectDoesNotExist
will catchDoesNotExist
exceptions for all models.
See get()
for further informationon ObjectDoesNotExist
and DoesNotExist
.
EmptyResultSet
- exception
EmptyResultSet
[源代码] EmptyResultSet
may be raised during query generation if a query won'treturn any results. Most Django projects won't encounter this exception,but it might be useful for implementing custom lookups and expressions.
FieldDoesNotExist
- exception
FieldDoesNotExist
[源代码] - The
FieldDoesNotExist
exception is raised by a model's_meta.get_field()
method when the requested field does not exist on themodel or on the model's parents.
MultipleObjectsReturned
- exception
MultipleObjectsReturned
[源代码] - The
MultipleObjectsReturned
exception is raised by a query if onlyone object is expected, but multiple objects are returned. A base versionof this exception is provided indjango.core.exceptions
; each modelclass contains a subclassed version that can be used to identify thespecific object type that has returned multiple objects.
See get()
for further information.
SuspiciousOperation
- exception
SuspiciousOperation
[源代码] The
SuspiciousOperation
exception is raised when a user hasperformed an operation that should be considered suspicious from a securityperspective, such as tampering with a session cookie. Subclasses ofSuspiciousOperation
include:DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
RequestDataTooBig
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
TooManyFieldsSent
If aSuspiciousOperation
exception reaches the WSGI handler level it islogged at theError
level and results inaHttpResponseBadRequest
. See the loggingdocumentation for more information.
PermissionDenied
- exception
PermissionDenied
[源代码] - The
PermissionDenied
exception is raised when a user does not havepermission to perform the action requested.
ViewDoesNotExist
- exception
ViewDoesNotExist
[源代码] - The
ViewDoesNotExist
exception is raised bydjango.urls
when a requested view does not exist.
MiddlewareNotUsed
- exception
MiddlewareNotUsed
[源代码] - The
MiddlewareNotUsed
exception is raised when a middleware is notused in the server configuration.
ImproperlyConfigured
- exception
ImproperlyConfigured
[源代码] - The
ImproperlyConfigured
exception is raised when Django issomehow improperly configured — for example, if a value insettings.py
is incorrect or unparseable.
FieldError
- exception
FieldError
[源代码] The
FieldError
exception is raised when there is a problem with amodel field. This can happen for several reasons:- A field in a model clashes with a field of the same name from anabstract base class
- An infinite loop is caused by ordering
- A keyword cannot be parsed from the filter parameters
- A field cannot be determined from a keyword in the queryparameters
- A join is not permitted on the specified field
- A field name is invalid
- A query contains invalid order_by arguments
ValidationError
- exception
ValidationError
[源代码] - The
ValidationError
exception is raised when data fails form ormodel field validation. For more information about validation, seeForm and Field Validation,Model Field Validation and theValidator Reference.
NON_FIELD_ERRORS
NON_FIELD_ERRORS
ValidationError
s that don't belong to a particular field in a formor model are classified asNON_FIELD_ERRORS
. This constant is usedas a key in dictionaries that otherwise map fields to their respectivelist of errors.
URL Resolver exceptions
URL Resolver exceptions are defined in django.urls
.
Resolver404
- exception
Resolver404
[源代码] - The
Resolver404
exception is raised byresolve()
if the path passed toresolve()
doesn'tmap to a view. It's a subclass ofdjango.http.Http404
.
NoReverseMatch
- exception
NoReverseMatch
[源代码] - The
NoReverseMatch
exception is raised bydjango.urls
when amatching URL in your URLconf cannot be identified based on the parameterssupplied.
Database Exceptions
Database exceptions may be imported from django.db
.
Django wraps the standard database exceptions so that your Django code has aguaranteed common implementation of these classes.
- exception
Error
[源代码] - exception
InterfaceError
[源代码] - exception
DatabaseError
[源代码] - exception
DataError
[源代码] - exception
OperationalError
[源代码] - exception
IntegrityError
[源代码] - exception
InternalError
[源代码] - exception
ProgrammingError
[源代码] - exception
NotSupportedError
[源代码] - The Django wrappers for database exceptions behave exactly the same asthe underlying database exceptions. See PEP 249, the Python Database APISpecification v2.0, for further information.
As per PEP 3134, a cause
attribute is set with the original(underlying) database exception, allowing access to any additionalinformation provided.
- exception
models.
ProtectedError
- Raised to prevent deletion of referenced objects when using
django.db.models.PROTECT
.models.ProtectedError
is a subclassofIntegrityError
.
Http Exceptions
Http exceptions may be imported from django.http
.
UnreadablePostError
- exception
UnreadablePostError
[源代码] UnreadablePostError
is raised when a user cancels an upload.
Transaction Exceptions
Transaction exceptions are defined in django.db.transaction
.
TransactionManagementError
- exception
TransactionManagementError
[源代码] TransactionManagementError
is raised for any and all problemsrelated to database transactions.
Testing Framework Exceptions
Exceptions provided by the django.test
package.
RedirectCycleError
- exception
client.
RedirectCycleError
RedirectCycleError
is raised when the test client detects aloop or an overly long chain of redirects.
Python Exceptions
Django raises built-in Python exceptions when appropriate as well. See thePython documentation for further information on the Built-in Exceptions.