自学Python之路-django视图--错误视图
Django 为出错信息提供了针对性很强的错误提示视图 。
提供的错误提示视图包括了内置错误视图和自定义错误视图,主要包括:
- handler404 = 'polls.views.my_custom_page_not_found_view' 找不到指定文件
- handler500 = 'polls.views.my_custom_error_view' 服务器内部服务
- handler403 = 'polls.views.my_custom_permission_denied_view' 权限拒绝
- handler400 = 'polls.views.my_custom_bad_request_view' 错误的请求
handler*名称都是固定的,不能随意更改,Django已经约定好的,不同的状态码对应不同的错误。
另外这些配置都需要写入到项目入口的urls.py文件中,不能写入到应用的urls.py文件中,不然不会生效。对于值需要引入写好的视图函数,写绝对路径。
为什么写入应用urls.py文件不生效呢?
因为当程序抛出Http404异常时,Django会加载一个特殊的view方法处理404错误。默认地, 它django.views.defaults.page_not_found,负责加载和渲染404.html模板文件。这意味着我们必须在模板根目录定义404.html模板文件,该模板文件应用于所有的404异常。
1 400 错误及视图
- 来自客户端的安全方面非法操作会引发400错误,例如篡改会话cookie,调用内置错误视图,使用templates/400.html模板渲染
2 404 错误及视图
url匹配失败后,django会调用内置的 django.views.defaults.page_not_found()函数,该视图函数会调用404.html的模板进行显示。
开发阶段可以开启调试模式,但产品上线后,要关闭调试模式。关闭调试模式后,会显示一个标准的错误页面。
在项目的settings配置文件中设置
# 关闭调试模式(开发模式)
DEBUG = False
404 错误文件自定义:
- 将请求地址进行url检测后,没有找到匹配的正则表达式,则调用404视图,这个视图会调用404.html的模板进行渲染
- 缺省的视图传递变量request_path给模板,表示导致错误的URL
- 在templates中创建404.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>404 not Found</title>
</head>
<body>
<h2>对不起,您访问的地址已经被外星人抓走了 <h2>
</body>
</html>
3 500 错误及视图
若是在执行视图函数时出现运行时错误,Django会默认会调用django.views.defaults.server_error 视图,加载并显示 500.html 模板,可以在项目的templates目录下,创建500.html来自定义该界面。
如果想改成自己特定的页面,如上404类似,在template下创建500.html即可。
.......
作者:CARLOS_CHIANG
出处:http://www.cnblogs.com/yaoyaojcy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
posted on 2023-03-13 07:24 CARLOS_KONG 阅读(41) 评论(0) 编辑 收藏 举报