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 06 Python
Python运算符重载用法实例
May 28 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
softmax及python实现过程解析
Sep 30 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
python新式类和经典类的区别实例分析
Mar 23 Python
PyTorch 实现L2正则化以及Dropout的操作
May 27 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字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
犀利的js 函数集合
2009/06/11 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
js Date概念详细介绍
2013/11/22 Javascript
jquery动态添加option示例
2013/12/30 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
批处理与python代码混合编程的方法
2016/05/19 Python
Python在线运行代码助手
2016/07/15 Python
Python守护线程用法实例
2017/06/23 Python
python基础练习之几个简单的游戏
2017/11/10 Python
Python基于WordCloud制作词云图
2019/11/29 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
国际书籍零售商:Wordery
2017/11/01 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
机关道德讲堂实施方案
2014/03/15 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android