Django 处理404错误,404错误是一个比较常见的网页访问错误,当被访问的URL资源不存在时就会抛出这类错误。下面修改detail视图使其在被查找的问卷不存在时抛出404错误。
# www.coolcou.com
from django.http import Http404
from django.shortcuts import render
from .models import Question
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404("问卷不存在")
return render(request, 'polls/detail.html', {'question': question})
按照前面步骤在polls文件夹下创建一个detail.html文件并作为detail视图的模板文件,模板内容暂时用{{ question }}
表示。detail.html与index.html在同一文件夹下。
此时重启Web服务,访问一个不存在的问卷,例如http://127.0.0.1:8000/polls/1000/
,如图所示。
由于404错误也是一个非常常见的网页异常,所以Django也提供了一个简写方法:get_ object_or_404
。下面使用get_object_or_404()
修改detail视图:
# www.coolcou.com
from django.shortcuts import get_object_or_404,render
from .models import Question
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', {'question': question})
重新访问detail页面,如图所示。
此时网页仍然抛出404错误,不过错误信息变成了Django默认的英文形式,此时可以通过修改get_object_or_404()
方法源代码的方式修改错误信息。记得修改完get_object_ or_404()
方法源代码需要重启Web服务。
与get_object_or_404相似,Django还提供了一个判断list是否存在的方法:get_list_ or_404
,在此不做详细介绍。
酷客教程相关文章:
评论前必须登录!
注册