我必须使用 django 呈现自定义 404 模板。 我决定从基础开始:
def custom_page_not_found(request):
response = render_to_response('404.html', {},
context_instance=RequestContext(request))
response.status_code = 404
return response
而且我很好奇为什么我不能有一个“404 not found”。如果我不使用 urls.py 中的 handler404,我将得到具有当前状态的空白 404 页面。 但当我想要一个自定义模板时就不行了。
有人知道为什么吗? (django 1.7.11)
请您参考如下方法:
在 Django 1.9+ 中,更改 status_code (例如 404)将改变 reason_phrase如果未设置(例如“未找到”)。但是,您使用的是旧版本的 Django,因此您必须手动更改 reason_phrase,否则它将保持“正常”状态。
创建响应时设置状态会更容易。
def custom_page_not_found(request):
return render_to_response('404.html', {},
context_instance=RequestContext(request),
status=404)
由于 render_to_response 快捷方式已过时,最好改用 render。
def custom_page_not_found(request):
return render(request, '404.html', {}, status=404)
