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中的正则表达式的用法
Apr 09 Python
在Apache服务器上同时运行多个Django程序的方法
Jul 22 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
python解决字符串倒序输出的问题
Jun 25 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
跟老齐学Python之Import 模块
2014/10/13 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
Windows下安装Scrapy
2018/10/17 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
Python3获取cookie常用三种方案
2020/10/05 Python
python 如何引入协程和原理分析
2020/11/30 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
销售团队激励口号
2014/06/06 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
法定代表人资格证明书
2015/06/18 职场文书
网络研修心得体会
2016/01/08 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android