django 如何创建一个自定义的404/500错误页面

    2019年9月19日 15:04   83 人阅读  0 条评论   编辑

在您的主要内容下views.py添加您自己的以下两个视图的自定义实现,并设置模板404.html和500.html以及您想要显示的内容。

代码:views.py 

from django.shortcuts import render_to_response
from django.template import RequestContext


def handler404(request, *args, **argv):
    response = render_to_response('404.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 404
    return response


def handler500(request, *args, **argv):
    response = render_to_response('500.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 500
    return response

handler404和handler500导出了Django字符串配置变量django/conf/urls/__init__.py。这就是上面配置的原因。

要使上述配置生效,您应该在urls.py文件中定义以下变量,并将导出的Django变量指向定义这些Django功能视图的字符串Python路径,如下所示:

在urls.py添加以下代码

from django.conf.urls import (
handler400, handler403, handler404, handler500
)

handler400 = 'my_app.views.bad_request'
handler403 = 'my_app.views.permission_denied'
handler404 = 'my_app.views.page_not_found'
handler500 = 'my_app.views.server_error'

Django 2.0的更新

在Django 2.0中更改了处理程序视图的签名:https: //docs.djangoproject.com/en/2.0/ref/views/#error-views

如果您使用上述视图,handler404将失败并显示以下消息:

“handler404()得到了一个意外的关键字参数'exception'”

在这种情况下修改您的视图,如下所示:

def handler404(request, exception, template_name="404.html"):
    response = render_to_response("404.html")
    response.status_code = 404
    return response

疑难杂症:

不要忘记DEBUG必须设置为False才能使这些工作,否则,将使用正常的调试处理程序。

官方文档:https://docs.djangoproject.com/en/2.2/topics/http/views/#customizing-error-views

本文地址:http://www.chenxm.cc/article/908.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
PREVIOUS: django中slug是什么?有什么用?可以应用于什么地方?
NEXT: Django 接收自定义请求头部(headers)详解
 相关文章  关键词:

 发表评论

还没有留言,还不快点抢沙发?