Django學習筆記:主動觸發404異常
1、簡介
HTTP 404
異常是表示請求頁面未找到。在Django
中我們可以通過raise Http404
來拋出這個異常。
【注意】如果在settings.py
中打開了Debug
模式的話,會出現一個默認的錯誤頁面用於顯示錯誤信息,需要將DEBUG
改爲False
才能觸發成功。
2、使用
下面爲根據捕獲的參數向數據庫查詢數據,如果找到就顯示在對應頁面,否則觸發404錯誤頁面:
from django.shortcuts import render_to_response
from django.http import HttpResponse
from polls.models import Poll
from django.http import Http404 #需要添加 Http404 引用
# 詳情視圖
def detail(request,poll_id):
try:
p=Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist: # 捕獲異常
raise Http404 # 觸發404錯誤
return render_to_response(‘polls/details.html’,{'poll’,p})
上述代碼導入了Http404
對象。在進行數據庫查詢時,如果找不到數據就捕獲Poll.DoesNotExist
異常,並觸發Http404
異常。由於這種“如果找不到,就拋出404錯誤”的場景太常用,所以Django
中提供了get_object_or_404
這樣的快捷方法,其效果和上面的代碼是一樣的:
# 詳情視圖
def detail(request,poll_id):
p=get_object_or_404(Poll,pk=poll_id)
return render_to_response('polls/details.html’,{'poll’,p})
參考鏈接