W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Django 提供了有關(guān)返回 HTTP 錯誤代碼的幫助。?HttpResponse
?的子類除了200外,還有很多常見的 HTTP 狀態(tài)代碼。返回這些子類中某個子類的實例而不是 ?HttpResponse
?來表示錯誤。比如:
from django.http import HttpResponse, HttpResponseNotFound
def my_view(request):
# ...
if foo:
return HttpResponseNotFound('<h1>Page not found</h1>')
else:
return HttpResponse('<h1>Page was found</h1>')
并不是每個可用 HTTP 響應(yīng)代碼都有專門指定的子類,因為它們很多并不常見。然而,如 ?HttpResponse
?文檔中所述的那樣,你也可以將 HTTP 狀態(tài)代碼傳遞給 ?HttpResponse
?的構(gòu)造函數(shù),這樣就可以為任何狀態(tài)代碼創(chuàng)建返回類。比如:
from django.http import HttpResponse
def my_view(request):
# ...
# Return a "created" (201) response code.
return HttpResponse(status=201)
因為 404 錯誤是最常見的 HTTP 錯誤,這里有更簡單的方法來處理這些錯誤。
當(dāng)你返回錯誤,例如 ?HttpResponseNotFound
?,你需要定義錯誤頁面的 HTML 。
return HttpResponseNotFound('<h1>Page not found</h1>')
為方便起見,在你的網(wǎng)站里有個一致的 404 錯誤頁面是個好辦法,Django 提供 ?Http404
?異常。如果你在視圖的任何地方引發(fā)了 ?Http404
?,Django 會捕捉到它并且返回標準的錯誤頁面,連同 HTTP 錯誤代碼 404 。
用法示例:
from django.http import Http404
from django.shortcuts import render
from polls.models import Poll
def detail(request, poll_id):
try:
p = Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist:
raise Http404("Poll does not exist")
return render(request, 'polls/detail.html', {'poll': p})
為了在 Django 返回404時顯示自定義的 HTML,你可以創(chuàng)建名為 404.html 的HTML模板,并將其放置在你的模板樹頂層。這個模板將在 DEBUG 設(shè)為 ?False
時提供。
當(dāng) DEBUG 為 ?True
?時,你可以提供 ?Http404
?信息,并且在標準的 404 調(diào)試模板里顯示。使用這些信息來調(diào)試;它們通常不適合在生產(chǎn)環(huán)境下的404模板。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: