Django1.5:尝试自定义404.html页面而不是500

时间:2013-10-08 18:03:43

标签: django

我正在尝试为HTTP 404错误创建自定义404.html页面。

对于此网址127.0.0.1:8000/polls/Books/dsfdsf/,它显示Page not found (404)默认调试页面,而DEBUG=True。 对于相同的网址,我想创建自定义404页面。

我已经通过了Django Docs

我采取了以下步骤:

1)。 settings.py

中的DEBUG=False

2)。 urls.py

中的handler404 = 'pollsite.views.custom_404'

3)。的 views.py

def custom_404(request):
    return render('404.html', context_instance=RequestContext(request))

4)。我已将404.html文件放在模板目录TEMPLATE_DIRS

现在我希望在我尝试访问127.0.0.1:8000/polls/Books/dsfdsf时出现自定义错误页面404.html,对吗? 相反,我得到了TemplateDoesNotExist: 500.html

即使是显示TemplateDoesNotExist: 500.html

的有效网址

为什么它不会生成HTTP 404错误,从而调用自定义404.html文件?

我尝试了为question1question2提到的解决方案 但仍然存在恼人的错误TemplateDoesNotExist: 500.html

请指出问题是什么?

编辑:错误的stacktarce

Traceback (most recent call last):
  File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 241, in __call__
    response = self.get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 153, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 228, in handle_uncaught_exception
    return callback(request, **param_dict)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/views/defaults.py", line 32, in server_error
    t = loader.get_template(template_name) # You need to create a 500.html template.
  File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py", line 145, in get_template
    template, origin = find_template(template_name)
  File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py", line 138, in find_template
    raise TemplateDoesNotExist(name)
TemplateDoesNotExist: 500.html

.........................的解决方案:

1)在 settings.py 设置ALLOWED_HOSTS = ['127.0.0.1']

2)在 views.py return render_to_response('404.html')

1 个答案:

答案 0 :(得分:0)

在settings.py中有一个设置:

 ALLOWED_HOSTS = []

如果Debug = False,则Django会查看ALLOWED_HOSTS。此设置需要包含您的IP地址。您也可以将其设置为:

 ALLOWED_HOSTS = ['*']

这在开发环境中工作正常,但不应在生产中使用。这很可能是您的问题以及Django在尝试加载该页面时抛出500.html服务器错误的原因。