Flask框架内置了一个装饰器before_request,使用它可以在请求之前做一些事。。。。
from flask import Flask, request # 实例化一个Flask对象 app = Flask(__name__) # 打印默认配置信息 # 引入开发环境的配置 app.config.from_object('settings.DEV') # 引入生产环境的配置 # app.config.from_object('settings.Pro') @app.before_request def before(): print('在flask route 请求 之前执行。。。') if request.path == '/index1': # index1请求放行 return None if request.path == '/index2': # index2请求拦截 return '没权限' @app.route('/index1', methods=['GET', 'POST']) def index1(): print('index1') return 'index1' @app.route('/index2', methods=['GET', 'POST']) def index2(): print('index2') return 'index2' if __name__ == '__main__': app.run(threaded=True)
浏览器发送请求: http://127.0.0.1:5000/index1
控制台打印如下:
在flask route 请求 之前执行。。。 index1 127.0.0.1 - - [13/Feb/2020 15:08:34] "GET /index1 HTTP/1.1" 200 -
总结:
@app.before_request装饰器装饰的函数在视图请求之前执行