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中的readline()方法的使用
May 24 Python
Python二分查找详解
Sep 13 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
python中函数默认值使用注意点详解
Jun 01 Python
python3实现暴力穷举博客园密码
Jun 19 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
python视频按帧截取图片工具
Jul 23 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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 get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
PHP缓冲区用法总结
2016/02/14 PHP
php注册登录系统简化版
2020/12/28 PHP
详解json在php中的应用
2018/09/30 PHP
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
JS中的多态实例详解
2017/10/15 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
高中军训的心得体会
2014/09/01 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
高中政治教师教学反思
2016/02/23 职场文书
MySQL七大JOIN的具体使用
2022/02/28 MySQL