DJango會拋出一些它自己的異常,以及Python的標(biāo)準(zhǔn)異常。
Django核心異常類定義在django.core.exceptions
中。
exception ObjectDoesNotExist
[source]
DoesNotExist
異常的基類;對ObjectDoesNotExist
的try/except
會為所有模型捕獲到所有DoesNotExist
異常。
ObjectDoesNotExist
和 DoesNotExist
的更多信息請見 get()
。
exception FieldDoesNotExist
[source]
當(dāng)被請求的字段在模型或模型的父類中不存在時,FieldDoesNotExist
異常由模型的 _meta.get_field()
方法拋出。
Changed in Django 1.8:
之前的版本中,異常只在django.db.models.fields
中定義,并不是公共API的一部分。
exception MultipleObjectsReturned
[source]
MultipleObjectsReturned
異常由查詢產(chǎn)生,當(dāng)預(yù)期只有一個對象,但是有多個對象返回的時候。這個異常的一個基礎(chǔ)版本在django.core.exceptions
中提供。每個模型類都包含一個它的子類版本,它可以用于定義返回多個對象的特定的對象類型。
詳見get()
。
exception SuspiciousOperation
[source]
當(dāng)用戶進(jìn)行的操作在安全方面可疑的時候,拋出SuspiciousOperation
異常,例如篡改會話cookie。SuspiciousOperation
的子類包括:
DisallowedHost
DisallowedModelAdminLookup
DisallowedModelAdminToField
DisallowedRedirect
InvalidSessionKey
SuspiciousFileOperation
SuspiciousMultipartForm
SuspiciousSession
如果SuspiciousOperation
異常到達(dá)了WSGI處理器層,它會在Error
層記錄,并導(dǎo)致HttpResponseBadRequest
異常。
詳見日志文檔。
exception PermissionDenied
[source]
PermissionDenied
異常當(dāng)用戶不被允許來執(zhí)行請求的操作時產(chǎn)生。
exception ViewDoesNotExist
[source]
當(dāng)所請求的視圖不存在時,ViewDoesNotExist
異常由 django.core.urlresolvers
產(chǎn)生。
exception MiddlewareNotUsed
[source]
當(dāng)中間件沒有在服務(wù)器配置中出現(xiàn)時,產(chǎn)生MiddlewareNotUsed
異常。
exception ImproperlyConfigured
[source]
DJango配置不當(dāng)時產(chǎn)生ImproperlyConfigured
異常 -- 例如,settings.py
中的值不正確或者不可解析。
exception FieldError
[source]
FieldError
異常當(dāng)模型字段上出現(xiàn)問題時產(chǎn)生。它會由以下原因造成:
exception ValidationError
[source]
當(dāng)表單或模型字段驗證失敗時拋出ValidationError
異常。關(guān)于驗證的更多信息,請見表單字段驗證, 模型字段驗證 和 驗證器參考。
NON_FIELD_ERRORS
在表單或者模型中不屬于特定字段的ValidationError
被歸類為NON_FIELD_ERRORS
。This constant is used as a key in dictionaries that otherwise map fields to their respective list of errors.
URL解析器異常定義在django.core.urlresolvers
中。
exception Resolver404
[source]
當(dāng)向 resolve()
傳遞的路徑不映射到視圖的時候,Resolver404
異常由django.core.urlresolvers.resolve()
產(chǎn)生。 它是 django.http.Http404
的子類。
exception NoReverseMatch
[source]
當(dāng)你的URLconf中的一個匹配的URL不能基于提供的參數(shù)識別時,NoReverseMatch
異常由 django.core.urlresolvers
產(chǎn)生。
數(shù)據(jù)庫異常由django.db
導(dǎo)入。
Django封裝了標(biāo)準(zhǔn)的數(shù)據(jù)庫異常,以便確保你的DJango代碼擁有這些類的通用實現(xiàn)。
exception Error
exception InterfaceError
exception DatabaseError
exception DataError
exception OperationalError
exception IntegrityError
exception InternalError
exception ProgrammingError
exception NotSupportedError
Django數(shù)據(jù)庫異常的包裝器的行為和底層的數(shù)據(jù)庫異常一樣。詳見PEP 249,Python 數(shù)據(jù)庫 API 說明 v2.0。
按照 PEP 3134,__cause__
屬性會在原生(底層)的數(shù)據(jù)庫異常中設(shè)置,允許訪問所提供的任何附加信息。(注意這一屬性在Python 2和 3下面都可用,雖然 PEP 3134通常只用于Python 3。)
exception models.``ProtectedError
使用django.db.models.PROTECT
時,拋出異常來阻止所引用對象的刪除。models.
ProtectedError is a subclass of IntegrityError
.
HTTP異常由django.http
導(dǎo)入。
exception UnreadablePostError
用戶取消上傳時拋出UnreadablePostError
異常。
事務(wù)異常定義在django.db.transaction
中。
exception TransactionManagementError
[source]
對于數(shù)據(jù)庫事務(wù)相關(guān)的任何問題,拋出TransactionManagementError
異常。
由DJango django.test
包提供的異常。
exception client.``RedirectCycleError
New in Django 1.8.
當(dāng)測試客戶端檢測到重定向的循環(huán)或者過長的鏈時,拋出RedirectCycleError
異常。
Django在適當(dāng)?shù)臅r候也會拋出Python的內(nèi)建異常。進(jìn)一步的信息請見內(nèi)建的異常的Python文檔。
譯者:Django 文檔協(xié)作翻譯小組,原文:Overview。
本文以 CC BY-NC-SA 3.0 協(xié)議發(fā)布,轉(zhuǎn)載請保留作者署名和文章出處。
Django 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。