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()

浙公网安备 33010602011771号