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提取内容关键词的方法
Mar 16 Python
初步解析Python下的多进程编程
Apr 28 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
python环境下安装opencv库的方法
Mar 05 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
详细分析Python collections工具库
Jul 16 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导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
PHP插入排序实现代码
2013/04/04 PHP
php while循环得到循环次数
2013/10/26 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
JS 建立对象的方法
2007/04/21 Javascript
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
python实现ping的方法
2015/07/06 Python
Python之str操作方法(详解)
2017/06/19 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
使用K.function()调试keras操作
2020/06/17 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
考试作弊检讨书大全
2014/02/18 职场文书
白岩松演讲
2014/05/21 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
关于旅游的活动方案
2014/08/15 职场文书
初级党校心得体会
2014/09/11 职场文书
2014年统战工作总结
2014/12/09 职场文书
食品质检员岗位职责
2015/04/08 职场文书
2015年化验员工作总结
2015/04/10 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python