Django:返回404状态代码的自定义404处理程序

时间:2010-02-22 01:00:22

标签: django http-status-code-404

我正在处理的项目有一些需要传递给每个视图的数据,所以我们有一个名为render_to_response的{​​{1}}包装器。确定。

现在,我需要404页面来完成这个任务。每the instructions,我创建了一个调用master_rtr的自定义404处理程序(巧妙地称为master_rtr)。一切看起来都不错,但我们的测试都失败了,因为我们收到了200 OK。

所以,我试图弄清楚如何返回404状态代码。有seems to be一个HttpResponseNotFound类,它有点像我想要的,但我不太确定如何构造所有的废话而不是使用custom_404。或者更确切地说,我可能想出来,但似乎他们必须是一个更容易的方式;在那里?

代码的相应部分:

render_to_response

3 个答案:

答案 0 :(得分:10)

简单方法:

def custom_404(request):
    response = master_rtr(...)
    response.status_code = 404
    return response

但我不得不问:你为什么不只是使用上下文处理器和RequestContext将数据传递给视图?

答案 1 :(得分:1)

答案 2 :(得分:0)

进入你的应用程序的views.py add:

# Imports
from django.shortcuts import render
from django.http import HttpResponse
from django.template import Context, loader


##
# Handle 404 Errors
# @param request WSGIRequest list with all HTTP Request
def error404(request):

    # 1. Load models for this view
    #from idgsupply.models import My404Method

    # 2. Generate Content for this view
    template = loader.get_template('404.htm')
    context = Context({
        'message': 'All: %s' % request,
        })

    # 3. Return Template for this view + Data
    return HttpResponse(content=template.render(context), content_type='text/html; charset=utf-8', status=404)

秘密在最后一行:status = 404

希望它有所帮助!