【问题标题】:How to use handler404 view in django?如何在 django 中使用 handler404 视图?
【发布时间】:2013-12-23 16:24:44
【问题描述】:

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

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

在 urls.py 中我已经包含了

handler404 = 'myapp.handlerview'

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

【问题讨论】:

    标签: python django python-2.7


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      代替

      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

      【讨论】:

        猜你喜欢
        • 2017-02-13
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 2016-05-11
        • 2015-06-25
        • 2021-01-07
        • 2019-09-29
        • 2015-08-15
        相关资源
        最近更新 更多