Python全系列 教程
3567个小节阅读:5931.2k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
App上下文,也叫应用上下文
上下文(感性的理解)
每一段程序都有很多外部变量,只有像add这种简单的函数才是没有外部变量的。 一旦一段程序有了外部变量,这段程序就不完整,不能独立运行。为了能让这段程序可以运行,就要给所有的外部变量一个一个设置一些值。就些值所在的集合就是叫上下文。
并且上下文这一概念在中断任务的场景下具有重大意义,其中任务在被中断后,处理器保存上下文并提供中断处理,因些在这之后,任务可以在同一个地方继续执行。(上下文越小,延迟越小)
举例
运行的Flask项目,每一个路由映射的内容片段,都不可以单独拿出来使用。
当获取到了APP_Context以后,就可以直接通过程序映射的地址访问逻辑,并且可以重复使用。
上下文的一个典型应用场景就是用来缓存一些我们需要在发生请求之前或者要使用的资源。举个例子,比如数据库连接。当我们在应用上下文中来存储东西的时候你得选择一个唯一的名字,这是因为应用上下文为 Flask 应用和扩展所共享。
应用上下文:
应用上下文是存放到一个LocalStack
的栈中。和应用app相关的操作就必须要用到应用上下文
比如:
通过current_app
获取当前的这个app
名字。
注意
在视图函数中,不用担心应用上下文的问题。因为视图函数要执行,那么肯定是通过访问url的方式执行的,
那么这种情况下,Flask底层就已经自动的帮我们把应用上下文都推入到了相应的栈中。
注意
如果想要在视图函数外面执行相关的操作,
比如: 获取当前的app名称,那么就必须要手动推入应用上下文
第一种方式:便于理解的写法
xxxxxxxxxx
from flask import Flask,current_app
app = Flask(__name__)
#app上下文
app_context = app.app_context()
app_context.push()
print(current_app.name)
@app.route('/')
def hello_world():
print(current_app.name) #获取应用的名称
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True)
第二种方式:用with语句
xxxxxxxxxx
from flask import Flask,current_app
app = Flask(__name__)
#app上下文
#换一种写法
with app.app_context():
print(current_app.name)
@app.route('/')
def hello_world():
print(current_app.name) #获取应用的名称
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True)
实时学习反馈
1. 在Flask中,对于应用上下文说法错误的是?
A 可以通过app.app_context()
获取上下文对象
B 若需要获取app对象的名称,必须将数据加入到堆的上下文中
C 视图访问时,不需要担心应用上下文的问题
D 应用上下文的数据,在请求之后会被全部释放
答案
1=>D