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实现的一个简单LRU cache
Sep 26 Python
python 文件操作api(文件操作函数)
Aug 28 Python
django基础之数据库操作方法(详解)
May 24 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
python框架django项目部署相关知识详解
Nov 04 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
Python 虚拟环境工作原理解析
Dec 24 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 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面试题集锦
2012/03/08 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
javascript知识点收藏
2007/02/22 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
解析Vue 2.5的Diff算法
2017/11/28 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
用Python实现数据的透视表的方法
2018/11/16 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python3中确保枚举值代码分析
2020/12/02 Python
ktv收银员岗位职责
2013/12/16 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
Android studio 简单计算器的编写
2022/05/20 Java/Android