Django 自定义404 500等错误页面的实现


Posted in Python onMarch 08, 2020

在开发网站的过程中,404,500错误,是不可避免产生的。
一旦产生了这种错误,很多可以通过web server 来处理。比如使用 apache 的定义
或者nginx 的定义。都可以定向处理。如果单纯在django里面可以处理吗?肯定是可以的,django提供了相应的处理方式,只要在django里

起步

面定义了,无论你今后部署在apache下或者是nginx下,都是生效的。

要想自定义错误页面,需要关闭调试模式 DEBUG = False ,因为调试模式的错误页面是开发下会显示错误信息的。

有两种方法可以实现自定义的错误页面。

方法一:创建特定命名的模板文件

这是一种非常简单的方式。在项目模板文件夹 templates 中创建命名为 404.html 的模板文件即可。

这个方式是其实是借用了 Django 的模板查找规则进行的。源码在 django.views.defaults.py 中:

ERROR_404_TEMPLATE_NAME = '404.html'

def page_not_found(request, exception, template_name=ERROR_404_TEMPLATE_NAME):
 ...

总的来说,方法一不需要设路由,只要新建规定名称的模板就能生效了。

方法二:设置句柄

如果需要更个性化的错误页面,不需要拘泥于特定的模板文件名,可以重新设置句柄,具体是在 urls.py 中设置:

# urls.py
def page_not_found(request, exception):
 return render(request, 'your_404_filename.html')

handler404 = page_not_found

urlpatterns = [
 ...
]

除了能捕获不存在路由地址,还能捕获视图中 raise Http404('message') 抛出的异常。

哪些错误页面可以配置

具体能自定义错误页面的有 4 中状态码:

# django.views.defaults.py
ERROR_404_TEMPLATE_NAME = '404.html'
ERROR_403_TEMPLATE_NAME = '403.html'
ERROR_400_TEMPLATE_NAME = '400.html'
ERROR_500_TEMPLATE_NAME = '500.html'

# django.conf.urls.__init__.py
handler400 = defaults.bad_request
handler403 = defaults.permission_denied
handler404 = defaults.page_not_found
handler500 = defaults.server_error

到此这篇关于Django 自定义404 500等错误页面的实现的文章就介绍到这了,更多相关Django自定义404 500错误页面内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
python+opencv实现的简单人脸识别代码示例
Nov 14 Python
利用python实现微信头像加红色数字功能
Mar 26 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
python离线安装外部依赖包的实现
Feb 13 Python
python使用turtle库绘制奥运五环
Feb 24 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
详解python tkinter 图片插入问题
Sep 03 Python
通过代码实例了解Python sys模块
Sep 14 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 #Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 #Python
Django接收照片储存文件的实例代码
Mar 07 #Python
Python实现对adb命令封装
Mar 06 #Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 #Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 #Python
mac在matplotlib中显示中文的操作方法
Mar 06 #Python
You might like
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
Cakephp 执行主要流程
2010/03/24 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
python执行使用shell命令方法分享
2017/11/08 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
解决python 找不到module的问题
2020/02/12 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
pandas apply多线程实现代码
2020/08/17 Python
python图片合成的示例
2020/11/09 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
给民警的表扬信
2014/01/08 职场文书
体育教师求职信
2014/05/24 职场文书
大学毕业生自我评价
2015/03/02 职场文书
海洋天堂观后感
2015/06/05 职场文书
初中物理教学反思
2016/02/19 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js
python 闭包函数详细介绍
2022/04/19 Python