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实现数组插入新元素的方法
May 22 Python
Python入门教程之运算符与控制流
Aug 17 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
使用Python对微信好友进行数据分析
Jun 27 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
详解python:time模块用法
Mar 25 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
Python常用编译器原理及特点解析
Mar 23 Python
python 牛顿法实现逻辑回归(Logistic Regression)
Oct 15 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
Jun 05 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的宝库目录--PEAR
2006/10/09 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python生成随机密码的方法
2017/06/16 Python
django Serializer序列化使用方法详解
2018/10/16 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
python装饰器的特性原理详解
2019/12/25 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
高二生物教学反思
2014/01/27 职场文书
售后服务承诺书范文
2014/03/26 职场文书
职工代表大会主持词
2014/04/01 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
监察建议书
2015/02/04 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
python - timeit 时间模块
2021/04/06 Python