Django學習筆記:主動觸發404異常

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})

參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章