Django Undantag¶
Django tar upp några av sina egna undantag samt standard Python-undantag.
Django Core Undantag¶
Django core undantagsklasser definieras i django.core.exceptions
.
AppRegistryNotReady
¶
ObjektDoesNotExist
¶
- exception ObjectDoesNotExist[source]¶
Basklassen för
Model.DoesNotExist
undantag. Entry/except
förObjectDoesNotExist
kommer att fångaDoesNotExist
undantag för alla modeller.Se
get()
.
EmptyResultSet
¶
Full resultatuppsättning
¶
FieldDoesNotExist
¶
Flera objekt återlämnade
¶
- exception MultipleObjectsReturned[source]¶
Basklassen för
Model.MultipleObjectsReturned
undantag. Entry/except
förMultipleObjectsReturned
kommer att fångaMultipleObjectsReturned
undantag för alla modeller.Se
get()
.
”Misstänkta operationer¶
- exception SuspiciousOperation[source]¶
Undantaget
SuspiciousOperation
uppstår när en användare har utfört en åtgärd som bör betraktas som misstänkt ur ett säkerhetsperspektiv, t.ex. manipulering av en sessionskaka. Underklasser tillSuspiciousOperation
inkluderar:DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
ogiltig sessionsnyckel
”Begäran om uppgifter alltför stor
”Misstänkt filhantering
”Misstänksamt flerdelat formulär
”Misstänkt session
TooManyFieldsSent
TooManyFilesSent
Om ett undantag från
SuspiciousOperation
når ASGI/WSGI-hanterarnivån loggas det påError
-nivån och resulterar i enHttpResponseBadRequest
. Se logging documentation för mer information.
PermissionDenied
¶
- exception PermissionDenied[source]¶
Undantaget
PermissionDenied
uppstår när en användare inte har behörighet att utföra den begärda åtgärden.
ViewDoesNotExist
¶
- exception ViewDoesNotExist[source]¶
Undantaget
ViewDoesNotExist
tas upp avdjango.urls
när en begärd vy inte finns.
MiddlewareNotUsed
¶
- exception MiddlewareNotUsed[source]¶
Undantaget
MiddlewareNotUsed
uppstår när en middleware inte används i serverkonfigurationen.
”Korrekt konfigurerad¶
- exception ImproperlyConfigured[source]¶
Undantaget
ImproperlyConfigured
uppstår när Django på något sätt är felaktigt konfigurerat - till exempel om ett värde isettings.py
är felaktigt eller omöjligt att separera.
FieldError
¶
- exception FieldError[source]¶
Undantaget
FieldError
uppstår när det finns ett problem med ett modellfält. Detta kan inträffa av flera skäl:Ett fält i en modell krockar med ett fält med samma namn från en abstrakt basklass
En oändlig loop orsakas av att man beställer
Ett nyckelord kan inte tolkas från filterparametrarna
Ett fält kan inte bestämmas utifrån ett nyckelord i frågeparametrarna
En join är inte tillåten på det angivna fältet
Ett fältnamn är ogiltigt
En fråga innehåller ogiltiga order_by-argument
Valideringsfel
¶
- exception ValidationError[source]¶
Undantaget
ValidationError
uppstår när data inte klarar validering av formulär eller modellfält. Mer information om validering finns i Form and Field Validation, Model Field Validation och Validator Reference.
fEL SOM INTE ÄR FÄLTFEL¶
- NON_FIELD_ERRORS¶
”ValidationError” som inte hör till ett visst fält i ett formulär eller en modell klassificeras som ”Non_field_errors”. Denna konstant används som en nyckel i ordböcker som annars mappar fält till deras respektive lista över fel.
BadRequest
¶
- exception BadRequest[source]¶
Undantaget
BadRequest
uppstår när begäran inte kan behandlas på grund av ett klientfel. Om ettBadRequest
undantag når ASGI/WSGI hanterarnivå resulterar det i enHttpResponseBadRequest
.
Beställning avbruten
¶
- exception RequestAborted[source]¶
Undantaget
RequestAborted
uppstår när en HTTP-kropp som läses in av hanteraren avbryts mitt i processen och klientanslutningen stängs, eller när klienten inte skickar data och når en timeout där servern stänger anslutningen.Den är intern för HTTP-hanteringsmodulerna och det är osannolikt att du kommer att se den någon annanstans. Om du ändrar HTTP-hanteringskoden bör du ta upp detta när du stöter på en avbruten begäran för att se till att sockeln stängs på ett snyggt sätt.
SynkronOnlyOperation
¶
- exception SynchronousOnlyOperation[source]¶
Undantaget
SynchronousOnlyOperation
uppstår när kod som endast är tillåten i synkron Python-kod anropas från ett asynkront sammanhang (en tråd med en asynkron händelseslinga som körs). Dessa delar av Django är i allmänhet starkt beroende av tråd-säkerhet för att fungera och fungerar inte korrekt under coroutines som delar samma tråd.Om du försöker anropa kod som endast är synkron från en asynkron tråd, skapa då en synkron tråd och anropa den i den. Du kan åstadkomma detta med
asgiref.sync.sync_to_async()
.
Undantag för URL-resolver¶
Undantag för URL-resolver definieras i django.urls
.
Resolver404
¶
- exception Resolver404[source]¶
Undantaget
Resolver404
tas upp avresolve()
om sökvägen som skickas tillresolve()
inte motsvarar en vy. Det är en underklass avdjango.http.Http404
.
NoReverseMatch
¶
- exception NoReverseMatch[source]¶
Undantaget
NoReverseMatch
skapas avdjango.urls
när en matchande URL i din URLconf inte kan identifieras baserat på de parametrar som anges.
Databasundantag¶
Databasundantag kan importeras från django.db
.
Django omsluter standarddatabasundantagen så att din Django-kod har en garanterad gemensam implementering av dessa klasser.
Django wrappers för databasundantag beter sig exakt likadant som de underliggande databasundantagen. Se PEP 249, Python Database API Specification v2.0, för ytterligare information.
Enligt PEP 3134 sätts ett __cause__
-attribut med det ursprungliga (underliggande) databasundantaget, vilket ger tillgång till ytterligare information som tillhandahålls.
- exception models.ProtectedError¶
Utlöses för att förhindra radering av refererade objekt när django.db.models.PROTECT
används. models.ProtectedError
är en underklass till IntegrityError
.
- exception models.RestrictedError¶
Utlöses för att förhindra radering av refererade objekt när django.db.models.RESTRICT
används. models.RestrictedError
är en underklass till IntegrityError
.
HTTP-undantag¶
HTTP-undantag kan importeras från django.http
.
OläsligtPostFel
¶
- exception UnreadablePostError[source]¶
UnreadablePostError
uppstår när en användare avbryter en uppladdning.
Undantag för sessioner¶
Sessionsundantag definieras i django.contrib.sessions.exceptions
.
Session avbruten
¶
- exception SessionInterrupted[source]¶
SessionInterrupted
tas upp när en session förstörs i en samtidig begäran. Det är en underklass avBadRequest
.
Undantag för transaktioner¶
Transaktionsundantag definieras i django.db.transaction
.
TransactionManagementError
¶
- exception TransactionManagementError[source]¶
TransactionManagementError
uppstår vid alla problem som har med databastransaktioner att göra.
Undantag i testramverket¶
Undantag som tillhandahålls av paketet django.test
.
RedirectCycleError
¶
- exception client.RedirectCycleError¶
RedirectCycleError
uppstår när testklienten upptäcker en loop eller en alltför lång kedja av omdirigeringar.
Python-undantag¶
Django tar också upp inbyggda Python-undantag när det är lämpligt. Se Python-dokumentationen för ytterligare information om Built-in Exceptions.