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 测试实现方法
Dec 24 Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
Nov 11 Python
朴素贝叶斯算法的python实现方法
Nov 18 Python
详解在Python和IPython中使用Docker
Apr 28 Python
python爬虫实例详解
Jun 19 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python中怎么表示空值
Jun 19 Python
Django多数据库联用实现方法解析
Nov 12 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
Python find()、rfind()方法及作用
Dec 24 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
linux iconv方法的使用
2011/10/01 PHP
百度地图API使用方法详解
2015/08/25 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python如何实现文本转语音
2016/08/08 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
Python中元组,列表,字典的区别
2017/05/21 Python
Python实现单词翻译功能
2017/06/06 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Python编程argparse入门浅析
2018/02/07 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
HEMA英国:荷兰原创设计
2018/08/28 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
爱情保证书范文
2014/02/01 职场文书
会计学自荐信
2014/06/03 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
合作合同协议书范本
2015/01/27 职场文书
市场总监岗位职责
2015/02/11 职场文书
导游词之西安骊山
2019/12/20 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python