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实现的文件同步服务器实例
Jun 02 Python
Python生成随机验证码的两种方法
Dec 22 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
numpy中矩阵合并的实例
Jun 15 Python
Django中的forms组件实例详解
Nov 08 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
Django Celery异步任务队列的实现
Jul 24 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
python实现的简单窗口倒计时界面实例
2015/05/05 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
幼儿园保育员辞职信
2014/01/12 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
三方合作协议书范本
2014/04/18 职场文书
小学评语大全
2014/04/22 职场文书
2014年实验室工作总结
2014/12/03 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
立春观后感
2015/06/18 职场文书
小学入学感言
2015/08/01 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
python区块链持久化和命令行接口实现简版
2022/05/25 Python