微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flask - after_request 和 before_request

目录

特殊的装饰器

from flask import Flask, session

app = Flask(__name__)


@app.before_request
def x1():
    print("前")


@app.after_request
def x2(response):
    print("后")
    return response


@app.route('/index', methods=['GET', 'POST'])
def index():
    print("视图函数执行")
    return 'Index'


@app.route('/order', methods=['GET', 'POST'])
def order():
    print("视图函数执行")
    return 'order'


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

多个中间件

from flask import Flask, session

app = Flask(__name__)


@app.before_request
def b1():
    print("前1")


@app.before_request
def b2():
    print("前2")


@app.after_request
def a1(response):
    print("后1")
    return response


@app.after_request
def a2(response):
    print("后2")
    return response


@app.route('/index', methods=['GET', 'POST'])
def index():
    print("视图函数执行")
    return 'Index'


@app.route('/order', methods=['GET', 'POST'])
def order():
    print("视图函数执行")
    return 'order'


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

执行 :

前1
前2
视图函数执行
后2
后1

怎么执行的 ?

  • @app.before_request

    • self.before_request_funcs.setdefault(None, []).append(f)
  • @app.after_request

    • self.after_request_funcs.setdefault(None, []).append(f)
  • 执行完before_request以后, 执行视图函数.

  • 先把after_request列表反转, 然后执行after_reqeust

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐