4

我正在使用 Django 1.1.1 稳定版。何时DEBUG设置为True Django flatpages可以正常工作;我尝试访问的每个平面页面何时DEBUGFalse引发自定义 404 错误(我的错误模板显然工作正常)。

在互联网上搜索建议创建我已经完成的 404 和 500 模板。

我已添加到FlatpageFallBackMiddlewaremiddleware_classes 和 flatpages 已添加到已安装的应用程序中。有什么想法可以让平面页面工作吗?

4

5 回答 5

6

同样的事情发生在我身上,直到我发现 404 视图正在发送 200 状态响应。因此,您所要做的就是将其添加到处理 404 响应的视图中:

def 404_handler(request):    ...

    response = render_to_response('404.html', locals(), context_instance=RequestContext(request))
    response.status_code = 404
    return response
于 2010-05-11T11:56:47.840 回答
1

尝试添加FlatpageFallBackMiddleware之前django.middleware.common.CommonMiddleware

并确保您的 404.html 和 500.html 存储在模板目录的根目录中(eg: templates/404.html)

于 2010-02-28T01:23:47.087 回答
0

关键是检查中间件的顺序。中间件在传入(请求和视图)的过程中以自上而下的顺序执行,在退出的过程中以自下而上的顺序执行响应异常)。因此,如果您在应该是一个完全合理的平面页面 URL 上访问 404 处理程序,那么在调用平面页面中间件之前,有些东西正在捕获 404。

于 2010-02-27T21:17:17.597 回答
0

在不同的上下文中出现相同的错误。问题是由我更改文件引起urls.py

from django.conf.urls.defaults import *

from django.conf.urls.defaults import include, patterns

正如所建议的那样pylint,但这省略了 handler404 和 handler500 预计将通过 import 隐式导入*

因此,无论是将这些添加到导入还是仅*作为 django 文档建议导入都可以解决问题。

于 2010-05-31T05:44:10.980 回答
0

制作一个打印堆栈跟踪的错误处理视图,import traceback;traceback.print_exc()而不是默默地忽略错误。

于 2013-09-25T05:49:53.780 回答