### 导航
- [索引](# "总目录")
- [下一页](# "延迟加载视图") |
- [上一页](# "用 jQuery 实现 Ajax") |
- [Flask 0.10.1 文档](#) »
- [Flask 代码模式](#) »
# 自定义错误页面
Flask 自带了很顺手的 [abort()](# "flask.abort") 函数用于以一个 HTTP 失败代码中断一个请求,他也会提供一个非常简单的错误页面,用于提供一些基础的描述。这个页面太朴素了以至于缺乏一点灵气。
依赖于错误代码的不同,用户看到某个错误的可能性大小也不同。
### 通常的错误代码
下面列出了一些用户经常遇到的错误代码,即使在这个应用准确无误的情况下也可能发生:
*404 Not Found*经典的“哎呦,您输入的 URL 当中有错误”消息。这个消息太常见了,即使是互联网的新手也知道 404 代号的意义: 该死,我寻找的东西不在那儿。确保404 页面上有一些有用的信息是一个好主意,至少应该提供一个返回主页的链接。*403 Forbidden*如果您的网站包含一些类型的访问控制,您必须向非法的请求返回 403 错误代号。所以请确保用户不会在试图访问了一个禁止访问的资源后不知所措。*410 Gone*您知道 404 Not Found 代号还有一个兄弟名为 410 Gone 么? 很少有人真正实现它,您可以考虑将其返回给对以前曾经存在、但是现在已经删除的资源的请求,而不是直接返回 404 。 如果您还没有从数据库里永久删除这个文档,仅仅是将他们标记为删除。那么可以为用户展示一个消息,说明他们寻找的东西已经永远删除了。*500 Internal Server Error*通常在出现编程错误或者服务器过载的时候会返回这个错误代号。在这里放一个漂亮的页面是一个非常好的主意。因为您的应用 *总有一天* 会出现错误(请参考[*记录应用错误*](#) )
### 错误处理器
一个错误处理器是一个类似于视图函数的函数,但是它在错误发生时被执行,并且错误被当成一个参数传递进来。一般来说错误可能是 HTTPException ,但是在有些情况下会是其他错误: 内部服务器的错误的处理器在被执行时,将会同时得到被捕捉到的实际代码错误作为参数。
错误处理器和要捕捉的错误代码使用 [errorhandler()](# "flask.Flask.errorhandler") 装饰器注册。请记住 Flask *不会* 替您设置错误代码,所以请确保在返回 response 对象时,提供了对应的 HTTP 状态代码。
如下实现了一个 “404 Page Not Found” 错误处理的例子:
~~~
from flask import render_template
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
~~~
一个示例模板可能会如下所示:
~~~
{% extends "layout.html" %}
{% block title %}Page Not Found{% endblock %}
{% block body %}
<h1>Page Not Found</h1>
<p>What you were looking for is just not there.
<p><a href="{{ url_for('index') }}">go somewhere nice</a>
{% endblock %}
~~~
© 版权所有 2013, Armin Ronacher.
- 欢迎使用 Flask
- 前言
- 给有经验程序员的前言
- 安装
- 快速入门
- 教程
- 介绍 Flaskr
- 步骤 0: 创建文件夹
- 步骤 1: 数据库模式
- 步骤 2: 应用设置代码
- 步骤 3: 创建数据库
- 步骤 4: 请求数据库连接
- 步骤 5: 视图函数
- 步骤 6: 模板
- 步骤 7: 添加样式
- 福利: 应用测试
- 模板
- 测试 Flask 应用
- 记录应用错误
- 配置处理
- 信号
- 即插视图
- 应用上下文
- 请求上下文
- 用蓝图实现模块化的应用
- Flask 扩展
- 与 Shell 共舞
- Flask 代码模式
- 大型应用
- 应用程序的工厂函数
- 应用调度
- 使用 URL 处理器
- 部署和分发
- 使用 Fabric 部署
- 在 Flask 中使用 SQLite 3
- 在 Flask 中使用 SQLAlchemy
- 上传文件
- 缓存
- 视图装饰器
- 使用 WTForms 进行表单验证
- 模板继承
- 消息闪现
- 用 jQuery 实现 Ajax
- 自定义错误页面
- 延迟加载视图
- 在 Flask 中使用 MongoKit
- 添加 Favicon
- 数据流
- 延迟请求回调
- 添加 HTTP Method Overrides
- 请求内容校验码
- 基于 Celery 的后台任务
- 部署选择
- mod_wsgi (Apache)
- 独立 WSGI 容器
- uWSGI
- FastCGI
- CGI
- 聚沙成塔
- API
- JSON 支持
- Flask 中的设计决策
- HTML/XHTML 常见问题
- 安全注意事项
- Flask 中的 Unicode
- Flask 扩展开发
- Pocoo 风格指引
- Python 3 支持
- 升级到最新版本
- Flask Changelog
- 许可证
- 术语表