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 相关文章推荐
python实现删除文件与目录的方法
Nov 10 Python
用Python代码来绘制彭罗斯点阵的教程
Apr 03 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
在Python中使用Neo4j的方法
Mar 14 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 Python
python 基于opencv实现图像增强
Dec 23 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
Banner程序
2006/10/09 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
华为c/c++笔试题
2016/01/25 面试题
数学国培研修感言
2014/02/13 职场文书
婚庆司仪主持词
2014/03/15 职场文书
保险公司开门红口号
2014/06/21 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
活动总结模板大全
2015/05/11 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
dubbo服务整合zipkin详解
2021/07/26 Java/Android
python字典进行运算原理及实例分享
2021/08/02 Python
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL