自学Python之路-django视图--错误视图

点击返回 自学Python之路-Diang

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即可。

.......

posted on 2023-03-13 07:24  CARLOS_KONG  阅读(27)  评论(0编辑  收藏  举报

导航