我正在处理的项目有一些需要传递给每个视图的数据,所以我们有一个名为render_to_response
的{{1}}包装器。确定。
现在,我需要404页面来完成这个任务。每the instructions,我创建了一个调用master_rtr的自定义404处理程序(巧妙地称为master_rtr
)。一切看起来都不错,但我们的测试都失败了,因为我们收到了200 OK。
所以,我试图弄清楚如何返回404状态代码。有seems to be一个HttpResponseNotFound类,它有点像我想要的,但我不太确定如何构造所有的废话而不是使用custom_404
。或者更确切地说,我可能想出来,但似乎他们必须是一个更容易的方式;在那里?
代码的相应部分:
render_to_response
答案 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
希望它有所帮助!