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 布尔操作实现代码
Mar 23 Python
python list使用示例 list中找连续的数字
Jan 27 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
pandas 层次化索引的实现方法
Jul 06 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
python request 模块详细介绍
Nov 10 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 Python
如何用Python徒手写线性回归
Jan 25 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
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
windows下python和pip安装教程
2018/05/25 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
如何通过python计算圆周率PI
2020/11/11 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
个人找工作自荐信格式
2013/09/21 职场文书
大众服装店创业计划书范文
2014/01/01 职场文书
茶叶生产计划书
2014/01/10 职场文书
大学校园生活自我鉴定
2014/01/13 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
现实表现材料范文
2014/12/23 职场文书
故宫的导游词
2015/01/31 职场文书
教师节晚会主持词
2015/06/30 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android