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中dictionary items()系列函数的用法实例
Aug 21 Python
numpy中的高维数组转置实例
Apr 17 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
Aug 10 Python
Python中的取模运算方法
Nov 10 Python
django 中QuerySet特性功能详解
Jul 25 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 Python
django教程如何自学
Jul 31 Python
Python基于Faker假数据构造库
Nov 30 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
Python 可迭代对象 iterable的具体使用
Aug 07 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
什么是短波收听SWL
2021/03/01 无线电
上传多个文件的PHP脚本
2006/11/26 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
js实现漫天星星效果
2017/01/19 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
心理健康心得体会
2014/01/02 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
革命电影观后感
2015/06/18 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL
python可视化大屏库big_screen示例详解
2021/11/23 Python