Django自定义全局403、404、500错误页面的示例代码


Posted in Python onMarch 08, 2020

自定义模板

403

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>403-禁止访问</title>
</head>
<body>
HTTP 403 - 禁止访问
</body>
</html>

404

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>404-无法找到文件</title>
</head>
<body>
HTTP 404- 无法找到文件
</body>
</html>

500

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>500-服务器错误</title>
</head>
<body>
HTTP 500 - 内部服务器错误
</body>
</html>

编写视图

# 全局403、404、500错误自定义页面显示
def page_not_found(request):
 return render(request, '404.html')


def page_error(request):
 return render(request, '500.html')


def permission_denied(request):
 return render(request, '403.html')

修改url

from .views import page_error, page_not_found, permission_denied


urlpatterns = [
 # ...
]

# 定义错误跳转页面
handler403 = permission_denied
handler404 = page_not_found
handler500 = page_error

尝试使用无权限用户访问,看是否会显示该页面

如果不对,修改settings.py中的DEBUG的值

DEBUG = False

注:若是DEBUG=True,有些情况下则不会生效

Http404抛出异常

raise Http404('资源不存在<id:{}>,请访问 xxx 查看')

模板中捕获异常信息

使用{{ exception }}即可捕获异常信息,转换为html代码{{ exception|safe }},可以根据这些代码中的id等,得到跳转的链接,参考

<!DOCTYPE html>
{% load static %}
<html lang="en">
<style type="text/css">
 .pic {
  margin: auto;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
 }
</style>
<head>
 <meta charset="UTF-8">
 <title>404-无法找到文件</title>
 <link href="//cdn.bootcss.com/toastr.js/latest/css/toastr.min.css" rel="external nofollow" rel="stylesheet">
</head>
<body>
<a href="//blog.starmeow.cn" rel="external nofollow" ><img class="pic" src="{% static 'errors/404.gif' %}"></a>
<p hidden>{{ exception|safe }}</p>

<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="//cdn.bootcss.com/toastr.js/latest/js/toastr.min.js"></script>
<script>

 toastr.options = { // toastr配置
  "closeButton": true,
  "debug": false,
  "progressBar": true,
  "positionClass": "toast-top-center",
  "showDuration": "400",
  "hideDuration": "1000",
  "timeOut": "7000",
  "extendedTimeOut": "1000",
  "showEasing": "swing",
  "hideEasing": "linear",
  "showMethod": "fadeIn",
  "hideMethod": "fadeOut"
 };

 $(function () {
  let redirect_url = $('#redirect_url').text();
  if (redirect_url.indexOf('//') === 0 || redirect_url.indexOf('http') === 0) { // 一链接开头才跳转
   toastr.warning('{{ exception|safe }}', '跳转中');
   setTimeout(function () {
    //这里写时间到后执行的代码
    $(location).attr('href', redirect_url);
   }, 3000);
  }
 })

</script>
</body>
</html>

后端

raise Http404('访问资源不存在,即将跳转 <span id="redirect_url">{}</span>'.format('blog.starmeow.cn'))
那么当出现404错误是,jquery就获取该di的值,如果是//或者是http开头,表明可能是个链接(后端请限制格式),前端直接跳转

到此这篇关于Django自定义全局403、404、500错误页面的示例代码的文章就介绍到这了,更多相关Django 403、404、500错误页面内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
5种Python单例模式的实现方式
Jan 14 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
Python实现的求解最大公约数算法示例
May 03 Python
Python3中bytes类型转换为str类型
Sep 27 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
Pyqt5实现英文学习词典
Jun 24 Python
Python PyCharm如何进行断点调试
Jul 05 Python
python从ftp获取文件并下载到本地
Dec 05 Python
Django 自定义404 500等错误页面的实现
Mar 08 #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
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
vue的toast弹窗组件实例详解
2018/05/14 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
详解python中requirements.txt的一切
2017/03/03 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
会议接待欢迎词
2014/01/12 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
医学生求职信
2014/07/01 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
小学生节水倡议书
2015/04/29 职场文书
论文评审意见
2015/06/05 职场文书
员工手册董事长致辞
2015/07/29 职场文书
Spring Boot 实现 WebSocket
2022/04/30 Java/Android