我正在使用Django 1.1.1稳定版。当DEBUG
设置为True
Django flatpages正常工作时;当DEBUG
为False
时,我尝试访问的每个网页都会引发自定义404错误(我的错误模板显然正常工作)。
在互联网上搜索建议我创建404和500个模板。
我已将FlatpageFallBackMiddleware
添加到middleware_classes,并将flatpages添加到已安装的应用程序中。我有什么想法可以让flatpages工作吗?
答案 0 :(得分: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
答案 1 :(得分:1)
尝试在FlatpageFallBackMiddleware
django.middleware.common.CommonMiddleware
并确保您的404.html和500.html存储在模板的根目录(eg: templates/404.html)
答案 2 :(得分:0)
关键是检查中间件的顺序。中间件在 in (请求和视图)中以自上而下的顺序执行,并在 out (响应和异常)的路上以自下而上的顺序执行。因此,如果您要访问404处理程序,那么应该是一个非常合理的平面网址,那么在调用flatpages中间件之前就会抓住404。
答案 3 :(得分:0)
在不同的上下文中有相同的错误。问题是由我从
更改文件urls.py
引起的
from django.conf.urls.defaults import *
到
from django.conf.urls.defaults import include, patterns
由pylint
建议,但是这省略了handler404和handler500,它们预计会被导入*
隐式导入。
所以要么添加要导入的内容,要么只是导入*
作为django文档建议解决了这个问题。
答案 4 :(得分:0)
创建一个错误处理视图,打印堆栈跟踪import traceback;traceback.print_exc()
,而不是静默忽略错误。