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删除java文件头上版权信息的方法
Jul 31 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
Django处理文件上传File Uploads的实例
May 28 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
python 模拟银行转账功能过程详解
Aug 06 Python
简单介绍python封装的基本知识
Aug 10 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
python使用建议与技巧分享(一)
Aug 17 Python
Python paramiko使用方法代码汇总
Nov 20 Python
教你用python实现一个无界面的小型图书管理系统
May 21 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
jquery实现直播视频弹幕效果
2020/02/25 jQuery
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
暑期社会实践学生的自我评价
2014/01/09 职场文书
企业军训感言
2014/02/08 职场文书
实用的简历自我评价
2014/03/06 职场文书
白酒营销策划方案
2014/08/17 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
英语教师求职信范文
2015/03/20 职场文书
学习经验交流会总结
2015/11/02 职场文书
2016教师国培研修感言
2015/12/08 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
Python 如何安装Selenium
2021/05/06 Python
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技