Django错误页面没有显示

时间:2012-01-09 17:09:23

标签: django django-errors

我正在使用django 1.1.4和python 2.6.6与mod_wsgi建立一个网站

客户希望404和500页面具有他的徽标和主页链接。我写了简单的页面。它大于512字节。我已经调整了PROJECT_ROOT / templates /

中的文件

如果我将debug设置为True,则错误表明它是404错误。但当我将其设置为False并尝试加载不存在的页面时,我收到内部服务器错误,如下所示:

  

内部服务器错误

     

服务器遇到内部错误或配置错误   无法完成您的请求。

     

请联系服务器管理员root @ localhost并告知   他们发生错误的时间,以及你可能做过的任何事情   可能导致错误。

     

有关此错误的详细信息可能在服务器错误中可用   登录。 Apache / 2.2.15(CentOS)服务器,网址为www.anglais-verbe.com端口80

我该怎么办?

我没有写过处理404,500的任何观点或对urls.py进行了更改。

这是我第一个完全成熟的django项目,我不确定会出现什么问题。

更新

我的管理员追溯电子邮件是

File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 125, in get_response
   callback, param_dict = resolver.resolve404()

 File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 267, in resolve404
   return self._resolve_special('404')

 File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 259, in _resolve_special
   callback = getattr(self.urlconf_module, 'handler%s' % view_type)

AttributeError: 'module' object has no attribute 'handler404'

2 个答案:

答案 0 :(得分:2)

您可以在主urls.py中设置404处理程序:

handler404 = 'yourproject.views.file_not_found_404'

然后你必须在views.py中创建以下视图:

from django.shortcuts import render_to_response
from django.template import RequestContext

def file_not_found_404(request):
    #create some variables here if you like
    path = request.path
    response = render_to_response('404.html', locals(),
                              context_instance=RequestContext(request))
    response.status_code = 404
return (response)

然后你可以在模板文件夹中为你的404创建一个模板:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL {{ path }} was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at yourdomain.com port 80</address>
</body></html>

希望这会有所帮助:) 这也应该类似于500错误

答案 1 :(得分:1)

  1. 仔细检查您的模板文件是否已命名为404.html500.html
  2. 如果debug=FALSE,则默认的Django行为是向管理员发送电子邮件。追溯说的是什么?
  3. 如果您没有此电子邮件,请查看apache错误日志以查看是否有任何线索。在Debian上(我不知道CentOS在我的头顶),假设apache2,位置是

    tail /var/log/apache2/error.log