我的生产服务器具有以下设置:
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
视图。为什么会这样?
答案 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”