Flask使用上下文临时把某些对象变为全局可访问
上下文分为:应用上下文(app)和请求上下文(request)。
Flask在分发请求之前激活(或推送)程序和请求上下文,请求处理完成后再将其删除。
请求上下文request和应用上下文current_app都是一个全局变量。所有请求都共享的。
Flask有特殊的机制可以保证每次请求的数据都是隔离的,即A请求所产生的数据不会影响到B请求。
- request:请求上下文上的对象。这个对象一般用来保存一些请求的变量。比如method、args、form等。
- session:请求上下文上的对象。这个对象一般用来保存一些会话信息。
- current_app:返回当前的app。
- g:应用上下文上的对象。处理请求时用作临时存储的对象。
from flask import request
def post(self):
'''读取excel'''
file = request.files['file']
course_svc.read_excel(file.read())
return
request对象当且仅当在其上下文的生命周期内才有效,离开了请求的生命周期,其上下文环境不存在,也就无法获取request对象
from flask import Flask
from app.score.api import ScoreList, Score
app = Flask(__name__)
api = Api(app)
url_prefix = '/api/bs/'
api.add_resource(ScoreList, url_prefix + 'score-list')
api.add_resource(Score, url_prefix + 'score')
if __name__ == '__main__':
app.run(host=config.APP_HOST, port=config.APP_PORT, threaded=True)
从一个 Flask App 读入配置并启动开始,就进入了 App Context,在其中我们可以访问配置文件、打开资源文件、通过路由规则反向构造 URL。
网友评论