浅入浅出Flask框架:自定义404等错误

2014-06-28

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

示例1:简单入门


建立Flask项目

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

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

编辑HelloWorld/index.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(debug=True)

效果

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

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

示例2:自定义错误页面


编辑HelloWorld/index.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'
    return render_template_string('<h1>{{ error_code }}</h1>', error_code=222)


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

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

效果

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