当用户点击不在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内部服务器错误。
答案 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