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使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
python之pandas用法大全
Mar 13 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
python实现简易动态时钟
Nov 19 Python
在python中使用requests 模拟浏览器发送请求数据的方法
Dec 26 Python
Tensorflow 多线程设置方式
Feb 06 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
常用的Python代码调试工具总结
Jun 23 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的库,结果发现很多东西
2006/12/31 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python函数返回值实例分析
2015/06/08 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Java及python正则表达式详解
2017/12/27 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
Python流程控制常用工具详解
2020/02/24 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
外语系毕业生自荐信范文
2013/12/16 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
导游词之唐山景点
2019/12/18 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
Python基础之变量的相关知识总结
2021/06/23 Python