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,效果如下:

本节源码

源码



(本文完)


Python Flask 框架教程