系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 脚本中心 > python > 详细页面

Django自定义全局403、404、500错误页面的示例代码

时间:2020-03-08来源:电脑系统城作者:电脑系统城

自定义模板

403


 
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>403-禁止访问</title>
  6. </head>
  7. <body>
  8. HTTP 403 - 禁止访问
  9. </body>
  10. </html>

404


 
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>404-无法找到文件</title>
  6. </head>
  7. <body>
  8. HTTP 404- 无法找到文件
  9. </body>
  10. </html>

500


 
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>500-服务器错误</title>
  6. </head>
  7. <body>
  8. HTTP 500 - 内部服务器错误
  9. </body>
  10. </html>

编写视图


 
  1. # 全局403、404、500错误自定义页面显示
  2. def page_not_found(request):
  3. return render(request, '404.html')
  4.  
  5.  
  6. def page_error(request):
  7. return render(request, '500.html')
  8.  
  9.  
  10. def permission_denied(request):
  11. return render(request, '403.html')
  12.  

修改url


 
  1. from .views import page_error, page_not_found, permission_denied
  2.  
  3.  
  4. urlpatterns = [
  5. # ...
  6. ]
  7.  
  8. # 定义错误跳转页面
  9. handler403 = permission_denied
  10. handler404 = page_not_found
  11. handler500 = page_error
  12.  

尝试使用无权限用户访问,看是否会显示该页面

如果不对,修改settings.py中的DEBUG的值

DEBUG = False

注:若是DEBUG=True,有些情况下则不会生效

Http404抛出异常

raise Http404('资源不存在<id:{}>,请访问 xxx 查看')

模板中捕获异常信息

使用{{ exception }}即可捕获异常信息,转换为html代码{{ exception|safe }},可以根据这些代码中的id等,得到跳转的链接,参考


 
  1. <!DOCTYPE html>
  2. {% load static %}
  3. <html lang="en">
  4. <style type="text/css">
  5. .pic {
  6. margin: auto;
  7. position: absolute;
  8. top: 0;
  9. left: 0;
  10. bottom: 0;
  11. right: 0;
  12. }
  13. </style>
  14. <head>
  15. <meta charset="UTF-8">
  16. <title>404-无法找到文件</title>
  17. <link href="//cdn.bootcss.com/toastr.js/latest/css/toastr.min.css" rel="external nofollow"rel="stylesheet">
  18. </head>
  19. <body>
  20. <a href="//blog.starmeow.cn" rel="external nofollow" ><img class="pic" src="{% static 'errors/404.gif' %}"></a>
  21. <p hidden>{{ exception|safe }}</p>
  22.  
  23. <script src="//code.jquery.com/jquery-3.1.1.min.js"></script>
  24. <script src="//cdn.bootcss.com/toastr.js/latest/js/toastr.min.js"></script>
  25. <script>
  26.  
  27. toastr.options = { // toastr配置
  28. "closeButton": true,
  29. "debug": false,
  30. "progressBar": true,
  31. "positionClass": "toast-top-center",
  32. "showDuration": "400",
  33. "hideDuration": "1000",
  34. "timeOut": "7000",
  35. "extendedTimeOut": "1000",
  36. "showEasing": "swing",
  37. "hideEasing": "linear",
  38. "showMethod": "fadeIn",
  39. "hideMethod": "fadeOut"
  40. };
  41.  
  42. $(function () {
  43. let redirect_url = $('#redirect_url').text();
  44. if (redirect_url.indexOf('//') === 0 || redirect_url.indexOf('http') === 0) { // 一链接开头才跳转
  45. toastr.warning('{{ exception|safe }}', '跳转中');
  46. setTimeout(function () {
  47. //这里写时间到后执行的代码
  48. $(location).attr('href', redirect_url);
  49. }, 3000);
  50. }
  51. })
  52.  
  53. </script>
  54. </body>
  55. </html>

后端

raise Http404('访问资源不存在,即将跳转 <span id="redirect_url">{}</span>'.format('blog.starmeow.cn'))
那么当出现404错误是,jquery就获取该di的值,如果是//或者是http开头,表明可能是个链接(后端请限制格式),前端直接跳转

到此这篇关于Django自定义全局403、404、500错误页面的示例代码的文章就介绍到这了,更多相关Django 403、404、500错误页面内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载