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引用类型和值类型的区别与使用解析
Oct 17 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
python 用for循环实现1~n求和的实例
Feb 01 Python
python 字典操作提取key,value的方法
Jun 26 Python
python requests证书问题解决
Sep 05 Python
Python中SQLite如何使用
May 27 Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 Python
python 检测nginx服务邮件报警的脚本
Dec 31 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 Python
python爬取网页版QQ空间,生成各类图表
Jun 02 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
document.write的几点使用心得
2014/05/14 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
javascript正则表达式总结
2016/02/29 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python函数式编程
2017/07/20 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
Python实现注册、登录小程序功能
2018/09/21 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
python如何快速生成时间戳
2020/07/21 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
彩色的非洲教学反思
2014/02/18 职场文书
应用心理学专业求职信
2014/08/04 职场文书
三八活动策划方案
2014/08/17 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
无罪辩护词范文
2015/05/21 职场文书
庆七一晚会主持词
2015/06/30 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
Python中itertools库的四个函数介绍
2022/04/06 Python