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