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})
参考链接