常用钩子函数

钩子函数是从收到请求到响应请求在整个链条中可以进行拦截的函数,钩子函数都是通过装饰器来注册的。常用的钩子函数如下。

before_first_request

在收到第一个请求之前执行,示例代码如下。

@app.before_first_request
    def first_request():
         print 'first time request')

before_request

在每次收到请求之前执行,示例代码如下。

@app.before_request
def before_request():
    if not hasattr(g, 'user'):
        setattr(g, 'user', 'xxxx')

teardown_appcontext

不管是否有异常,都会在每次请求之后执行,示例代码如下。

@app.teardown_appcontext
def teardown(exc=None):
    if exc is None:
        db.session.commit()
    else:
        db.session.rollback()

context_processor

上下文处理器在每次渲染模板时,会把这个钩子函数中返回的数据添加到模板中,示例代码如下。

@app.context_processor
return {'current_user':'xxx'}

errorhandler

用于指定在出现非 200 状态码时的错误处理方法,示例代码如下。

@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist',404