Django4.0 URL調(diào)度器-錯(cuò)誤處理

2022-03-16 17:42 更新

當(dāng) Django 找不到所匹配的請(qǐng)求 URL 時(shí),或引發(fā)了異常時(shí),Django 會(huì)調(diào)用一個(gè)錯(cuò)誤處理視圖。

這些情況發(fā)生時(shí)使用的視圖通過(guò)4個(gè)變量指定。它們的默認(rèn)值應(yīng)該滿足大部分項(xiàng)目,但是通過(guò)賦值給它們以進(jìn)一步的自定義也是可以的。

這些值得在你的根?URLconf?中設(shè)置。在其它?URLconf中設(shè)置這些變量將不會(huì)生效果。

它們的值必須是可調(diào)用的或者是表示視圖的Python 完整導(dǎo)入路徑的字符串,可以方便地調(diào)用它們來(lái)處理錯(cuò)誤情況。

這些值是:

  • handler400 -- 一個(gè)可調(diào)用對(duì)象,或者一個(gè)代表視圖的完整 Python 導(dǎo)入路徑的字符串,如果 HTTP 客戶端發(fā)送了一個(gè)引起錯(cuò)誤條件的請(qǐng)求,并且響應(yīng)的狀態(tài)碼為 400,那么就會(huì)調(diào)用該視圖。默認(rèn)情況下,這是 ?django.views.defaults.bad_request()?。如果你實(shí)現(xiàn)了自定義視圖,請(qǐng)確保它接受 ?request和 ?exception參數(shù),并返回一個(gè) ?HttpResponseBadRequest。
  • handler403 -- 一個(gè)可調(diào)用對(duì)象,或者一個(gè)代表視圖的完整 Python 導(dǎo)入路徑的字符串,如果用戶沒(méi)有訪問(wèn)資源所需的權(quán)限,那么就會(huì)調(diào)用該視圖。默認(rèn)情況下,這是 ?django.views.defaults.permission_denied()?。如果你實(shí)現(xiàn)了一個(gè)自定義視圖,請(qǐng)確保它接受 ?request和 ?exception參數(shù),并返回一個(gè) ?HttpResponseForbidden。
  • handler404 -- 一個(gè)可調(diào)用對(duì)象,或者一個(gè)代表視圖的完整 Python 導(dǎo)入路徑的字符串,如果沒(méi)有任何 URL 模式匹配,那么就會(huì)調(diào)用該視圖。默認(rèn)情況下,這是 ?django.views.defaults.page_not_found()?。如果你實(shí)現(xiàn)了自定義視圖,請(qǐng)確保它接受 ?request和 ?exception參數(shù),并返回一個(gè) ?HttpResponseNotFound?。
  • handler500 -- 一個(gè)可調(diào)用對(duì)象,或者一個(gè)代表視圖的完整 Python 導(dǎo)入路徑的字符串,在服務(wù)器出錯(cuò)時(shí)會(huì)被調(diào)用。當(dāng)你在視圖代碼中出現(xiàn)運(yùn)行時(shí)錯(cuò)誤時(shí),就會(huì)發(fā)生服務(wù)器錯(cuò)誤。默認(rèn)情況下,這是 ?django.views.defaults.server_error()?。如果你實(shí)現(xiàn)了自定義視圖,請(qǐng)確保它接受一個(gè) ?request參數(shù),并返回一個(gè) ?HttpResponseServerError?。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)