2010-02-27 59 views
4

我正在使用Django 1.1.1 stable。当DEBUG设置为TrueDjango flatpages正常工作;当DEBUGFalse我尝试访问的每个flatpage引发了一个自定义的404错误(我的错误模板显然工作正常)。当DEBUG为False时(404和500模板存在),Django提升404页面

在互联网上搜索建议创建404和500模板,我已经做了。

我已将FlatpageFallBackMiddleware添加到middleware_classes,并将flatpages添加到已安装的应用程序中。任何想法,我怎样才能使flatpage工作?

回答

0

关键是检查您的中间件的顺序。中间件以的方式在(请求和查看)中自上而下的顺序执行,并且在中途从下往上的顺序列出(响应和异常)。所以,如果你正在404处理程序上获得一个完全合理的flatpage URL,那么在flatpage中间件被调用之前,某些东西正在捕获404。

1

尝试之前django.middleware.common.CommonMiddleware

添加FlatpageFallBackMiddleware和肯定,你404.html和500.html都存放在你的模板的根目录(eg: templates/404.html)

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 
+0

那帮了我,谢谢 – dmitko 2011-03-25 14:39:42

+0

很好的答案。解决了我的问题。 – pythondjango 2013-01-03 03:26:22

0

在不同的上下文有同样的错误。这个问题是从

from django.conf.urls.defaults import * 

造成我改变文件urls.py

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

pylint建议,但是这忽略了它们预计将进口*隐含进口handler404和handler500。

所以要么添加那些导入或只是导入*作为Django文档建议解决这个问题。

0

进行错误处理视图,打印栈跟踪import traceback;traceback.print_exc()而不是无视地忽略错误。