flask中的中间件

flask的中间件功能和Django类似,不同的是使用的是使用3个装饰器来实现的;

1.@app.before_first_request :请求第1次到来执行1次,之后都不执行;

2.@app.before_request:请求到达视图之前执行;(改函数不能有返回值,否则直接在当前返回)

3.@app.after_request:请求 经过视图之后执行;(最下面的先执行)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask, Request, render_template

app = Flask(__name__, template_folder='templates')
app.debug = True


@app.before_first_request  #第1个请求到来执行
def before_first_request1():
    print('before_first_request1')


@app.before_request #中间件2
def before_request1():
    Request.nnn = 123
    print('before_request1')  #不能有返回值,一旦有返回值在当前返回


@app.before_request
def before_request2():
    print('before_request2')


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


@app.route('/')
def hello_world():
    return "Hello World"


@app.after_request #中间件 执行视图之后
def after_request1(response):
    print('after_request1', response)
    return response


@app.after_request #中间件 执行视图之后 先执行 after_request2
def after_request2(response):
    print('after_request2', response)
    return response


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

  

上一篇:简单分析Flask 数据库迁移详情


下一篇:Flask——使用sqlalchemy的配置