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内置函数之filter map reduce介绍
Nov 30 Python
Python查找相似单词的方法
Mar 05 Python
python 删除列表里所有空格项的方法总结
Apr 18 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
Python目录和文件处理总结详解
Sep 02 Python
python中bytes和str类型的区别
Oct 21 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 Python
Python之matplotlib绘制饼图
Apr 13 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/09/11 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
js中的闭包学习心得
2018/02/06 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
react的hooks的用法详解
2020/10/12 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python解释执行原理分析
2014/08/22 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
使用python 3实现发送邮件功能
2018/06/15 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Python自动创建Excel并获取内容
2020/09/16 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
仓库管理制度
2014/01/21 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
玄武湖导游词
2015/02/05 职场文书
2015年安全月活动总结
2015/03/26 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python
Redis实现订单过期删除的方法步骤
2022/06/05 Redis