Python Flask 框架教程

所有文章
安装 Flask 从 Hello World 开始 获取 URL 参数 获取 POST 方法传送的数据 处理和响应 JSON 数据 上传文件 Restful URL 使用 url_for 生成链接 使用 redirect 重定向网址 使用 Jinja2 模板引擎 自定义404等错误的响应 用户会话 使用 Cookie 使用闪存系统 flashing system

Python Flask: 自定义404等错误的响应


本文讲述在 Python Flask Web 框架中如何自定义 404 等错误的响应。

要处理HTTP错误,可以使用flask.abort函数。

示例1:简单入门

建立Flask项目

按照以下命令建立Flask项目HelloWorld:

mkdir HelloWorld
mkdir HelloWorld/static
mkdir HelloWorld/templates
touch HelloWorld/server.py

代码

编辑HelloWorld/server.py

from flask import Flask, render_template_string, abort

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'hello world'


@app.route('/user')
def user():
    abort(401)  # Unauthorized 未授权
    print('Unauthorized, 请先登录')


if __name__ == '__main__':
    app.run(port=5000, debug=True)

效果

运行HelloWorld/server.py,浏览器访问http://127.0.0.1:5000/user,效果如下:

要注意的是,HelloWorld/server.pyabort(401)后的print并没有执行。

示例2:自定义错误页面

代码

将服务器代码改为:

from flask import Flask, render_template_string, abort

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'hello world'


@app.route('/user')
def user():
    abort(401)  # Unauthorized


@app.errorhandler(401)
def page_unauthorized(error):
    return render_template_string('<h1> Unauthorized </h1><h2>{{ error_info }}</h2>', error_info=error), 401


if __name__ == '__main__':
    app.run(port=5000, debug=True)

page_unauthorized函数返回的是一个元组,401 代表HTTP 响应状态码。如果省略401,则响应状态码会变成默认的 200。

效果

运行HelloWorld/server.py,浏览器访问http://127.0.0.1:5000/user,效果如下:

本节源码

源码


( 本文完 )

目录