【问题标题】:Django error page not showingDjango错误页面未显示
【发布时间】:2012-01-10 21:34:44
【问题描述】:

我正在使用 django 1.1.4 和 python 2.6.6 和 mod_wsgi 来构建网站

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

如果我将调试设置为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'

【问题讨论】:

    标签: django django-errors


    【解决方案1】:

    您可以在主 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 错误

    【讨论】:

    【解决方案2】:
    1. 仔细检查您的模板文件是否命名为404.html500.html
    2. 如果是debug=FALSE,那么默认的 Django 行为是向管理员发送电子邮件。回溯说明了什么?
    3. 如果您没有这封邮件,请查看 apache 错误日志,看看是否有任何线索。在Debian上(我不知道CentOS),假设apache2,位置是

      tail /var/log/apache2/error.log
      

    【讨论】:

    • 客户端几乎没有给我访问权限。并且 /var/log/ 没有 apache2 目录。我可以创建一个管理员。我会收到一封电子邮件吗?
    • 您需要将您的电子邮件添加到ADMINS 设置,然后重新启动apache。
    • 我已通过电子邮件中的回溯更新了问题>
    猜你喜欢
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2012-07-12
    • 1970-01-01
    • 2015-05-03
    • 2016-02-11
    相关资源
    最近更新 更多