Django 处理404错误

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/,如图所示。
Django 处理404错误

由于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页面,如图所示。
Django 处理404错误

此时网页仍然抛出404错误,不过错误信息变成了Django默认的英文形式,此时可以通过修改get_object_or_404()方法源代码的方式修改错误信息。记得修改完get_object_ or_404()方法源代码需要重启Web服务。

与get_object_or_404相似,Django还提供了一个判断list是否存在的方法:get_list_ or_404,在此不做详细介绍。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!