如何在django中使用handler404视图?

时间:2013-12-06 10:40:35

标签: python django python-2.7

当用户点击不在urls.py中的网址时,我想显示404错误页面。 在settings.py中,我把DEBUG = False,我写了一个像这样的处理程序视图

def handler404(request):
  from django.shortcuts import render
  return render(request, '404.html')

并在urls.py中包含了

handler404 ='myapp.handlerview'

现在每当我输入不在网址列表中的网址时,我就会收到500服务器错误。我想显示404.html网页而不是500内部服务器错误。

2 个答案:

答案 0 :(得分:2)

您无需执行任何操作。当然,Django的默认行为是返回404页面,如果它与urlconf中的任何URL都不匹配。

默认处理程序几乎总是合适的,您只需要在模板目录的根目录中定义名为“404.html”的模板。定义自定义处理程序的唯一原因是,如果需要额外的上下文变量,或者如果要对404错误执行自定义逻辑(例如,日志记录)。

答案 1 :(得分:0)

这样做的原因是您没有在处理程序中包含异常参数。

代替

def handler404(request):
  from django.shortcuts import render
  return render(request, '404.html')

必须的

def handler404(request, exception):
  from django.shortcuts import render
  return render(request, '404.html')

请参阅此处的文档:https://docs.djangoproject.com/en/2.2/ref/urls/#django.conf.urls.handler404