django的403/404/500错误自定义页面的配置方式


Posted in Python onMay 21, 2020

要实现标题的功能,总共分四步:

1.创建html错误页

2.配置settings

3.编写视图

4.配置url

我的开发环境:

django1.10.3

python2.7.12

前期工作

创建项目及app

$ django-admin.py startproject Test
...
$ python manage.py startapp myapp
...

1.创建html错误页

在Test目录下,创建templates文件夹

在文件夹下创建404.html/403.html/500.html文件

2.配置settings

配置tamplates文件路径、关闭Debug、配置allowrd_hosts

DEBUG = False # 关闭Debug
...
TEMPLATES = [
  {
    ...
    'DIRS': ['templates/'], # 配置tamplates文件路径    
    ...
  },
]
...
ALLOWED_HOSTS = [ 
  '192.168.1.12', # 配置allowrd_hosts
]

3.编写视图

在myapp下编写views.py

from django.shortcuts import render

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')

4.配置url

...
from myapp.views import *

handler403 = permission_denied
handler404 = page_not_found
handler500 = page_error
...

ok!运行一下,看看结果!

补充知识:Django 漂亮的出错页面

django的403/404/500错误自定义页面的配置方式

例子展示 Django 的出错页面。 我们来花些时间看一看这个出错页,了解一下其中 给出了哪些信息。

以下是值得注意的一些要点:

在页面顶部,你可以得到关键的异常信息: 异常数据类型、异常的参数 (如本例中的 "unsupported type" )、在哪个文件中引发了异常、出错的行号等等。

django的403/404/500错误自定义页面的配置方式

在关键异常信息下方,该页面显示了对该异常的完整 Python 追踪信息。 这类似于你在 Python 命令行解释器中获得的追溯信息,只不过后者更具交互性。 对栈中的每一帧,Django 均显示了其文件名、函数或方法名、行号及该行源代码。

django的403/404/500错误自定义页面的配置方式

点击该行代码 (以深灰色显示),你可以看到出错行的前后几行,从而得知相关上下文情况。

django的403/404/500错误自定义页面的配置方式

点击栈中的任何一帧的“Local vars”可以看到一个所有局部变量的列表,以及在出错 那一帧时它们的值。 这些调试信息相当有用。

django的403/404/500错误自定义页面的配置方式

注意"Traceback"下面的"Switch to copy-and-paste view"文字。 点击这些字,追溯会 切换另一个视图,它让你很容易地复制和粘贴这些内容。 当你想同其他人分享这些异常 追溯以获得技术支持时(比如在 Django 的 IRC 聊天室或邮件列表中),可以使用它。

django的403/404/500错误自定义页面的配置方式

你按一下下面的"Share this traceback on a public Web site"按钮,它将会完成这项工作。 点击它以传回追溯信息至http://www.dpaste.com/,在那里你可以得到一个单独的URL并与其他人分享你的追溯信息。

接下来的”Request information”部分包含了有关产生错误的 Web 请求的大量信息: GET 和 POST、cookie 值、元数据(象 CGI 头)。

django的403/404/500错误自定义页面的配置方式

Request信息的下面,“Settings”列出了 Django 使用的具体配置信息。

Django 的出错页某些情况下有能力显示更多的信息,比如模板语法错误。

以上这篇django的403/404/500错误自定义页面的配置方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python从MP3文件获取id3的方法
Jun 15 Python
Python时间获取及转换知识汇总
Jan 11 Python
python处理按钮消息的实例详解
Jul 11 Python
pandas string转dataframe的方法
Apr 11 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
python给微信好友定时推送消息的示例
Feb 20 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
python属于解释语言吗
Jun 11 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 Python
python 基于UDP协议套接字通信的实现
Jan 22 Python
python 3.8.3 安装配置图文教程
May 21 #Python
Python中的xlrd模块使用原理解析
May 21 #Python
python中sklearn的pipeline模块实例详解
May 21 #Python
Python使用re模块验证危险字符
May 21 #Python
Django 解决新建表删除后无法重新创建等问题
May 21 #Python
python 解决Fatal error in launcher:错误问题
May 21 #Python
django实现日志按日期分割
May 21 #Python
You might like
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
初识php MVC
2014/09/10 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
图片自动更新(说明)
2006/10/02 Javascript
学习YUI.Ext 第三天
2007/03/10 Javascript
深入认识javascript中的eval函数
2009/11/02 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
详解python while 函数及while和for的区别
2018/09/07 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
公司年会演讲稿范文
2014/01/11 职场文书
2015年人民调解工作总结
2015/05/18 职场文书