Django,自定义错误页面重定向到500,而不是404

时间:2018-09-19 06:26:59

标签: python django

我的生产服务器具有以下设置:

git ls-files -v | grep ^h

然后在我的主要DEBUG = False ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'my.ip.address', 'example.com'] 文件中添加了以下内容:

urls.py

我的from django.conf.urls import url, include, handler404, handler500 handler500 = 'main.views.error_500' handler404 = 'main.views.error_404' 具有这些:

main.views

当我部署生产服务器并尝试打开不存在的页面时,它应该重定向到我的def error_404(request): return render(request, 'main/errors/404.html', status=404) def error_500(request): return render(request, 'main/errors/500.html', status=500) 视图。但是,它重定向到我的error_404视图。为什么会这样?

1 个答案:

答案 0 :(得分:3)

这个问题已经三个月了,但是对于社区来说,这就是我如何解决这个问题:

未找到404页的视图需要一个“ exception”参数:

def error_404(request, exception):
    return render(request,'myapp/404.html', status = 404)
  

默认的404视图会将两个变量传递给模板:   request_path,它是导致错误的URL,以及   异常,它是异常的有用表示,   触发了视图(例如,包含传递给特定位置的任何消息   Http404实例)。

来源:https://docs.djangoproject.com/en/2.1/ref/views/#the-404-page-not-found-view

我是Django-noob,但我假设,如果没有此参数,则404会触发500。

还有一件事:它无需导入即可为我工作:“从django.conf.urls导入handler404,handler500”