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

参考链接

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