

上下文:即语境,语意,在程序中可以理解为在代码执行到某一时刻时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情。
Flask中有两种上下文:请求上下文和应用上下文。
Flask中上下文对象:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。
1.请求上下文
在 flask 中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:request、session
request :
封装了HTTP请求的内容,针对的是http请求。
举例:user = request.args.get('user'),获取的是get请求的参数。
session :
用来记录请求会话中的信息,针对的是用户信息。
举例:session['name'] = user.id,可以记录用户信息。还可以通过session.get('name')获取用户信息。
2.应用上下文
它的字面意思是 应用上下文,但它不是一直存在的,它只是request context 中的一个对 app 的代理(人),所谓local proxy。它的作用主要是帮助 request 获取当前的应用,它是伴 request 而生,随 request 而灭的。
应用上下文对象有:current_app,g
current_app:
应用程序上下文,用于存储应用程序中的变量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量,例如:
- 应用的启动脚本是哪个文件,启动时指定了哪些参数
- 加载了哪些配置文件,导入了哪些配置
- 连了哪个数据库
- 有哪些
public的工具类、常量 - 应用跑再哪个机器上,
IP多少,内存多大
蓝图:item.py
# -*- coding: utf-8 -*-
# @File : item.py
# @author: 北极的三哈
# @email : Flymeawei@163.com
# @Time : 2022/12/16 21:25
""""""
from flask import Blueprint, current_app
item_bp = Blueprint('item', __name__)
@item_bp.route('/sanHa')
def item1():
print(current_app.sanHa)
return 'Hello Bi Ji De sanHa'
current_app 就是当前运行的flask app,在代码不方便直接操作flask的app对象时,可以操作current_app就等价于操作flask app对象。
应用上下文.py
# -*- coding: utf-8 -*-
# @File : 应用上下文.py
# @author: 北极的三哈
# @email : Flymeawei@163.com
# @Time : 2022/12/16 21:25
""""""
from flask import Flask
from item import item_bp
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(item_bp, url_prefix='/item')
@app.route('/')
def hello_hello():
app.sanHa = 'Bei Ji De sanHa' # 往 app中设置任意一个参数
return 'Hello World'


3.G对象
g 作为 flask 程序全局的一个临时变量,充当中间媒介的作用,我们可以通过它在一次请求调用的多个函数间传递一些数据。每次请求都会重设这个变量。
蓝图:item.py
# -*- coding: utf-8 -*-
# @File : item.py
# @author: 北极的三哈
# @email : Flymeawei@163.com
# @Time : 2022/12/16 21:25
""""""
from flask import Blueprint, current_app, g
from db_handler import find_item
item_bp = Blueprint('item', __name__)
@item_bp.route('/sanHa')
def item1():
print(current_app.sanHa)
g.item_id = '1001'
g.item_name = 'sanHa'
find_item()
return 'Hello Bi Ji De sanHa'
查询数据:db_handler.py
# -*- coding: utf-8 -*-
# @File : db_handler.py
# @author: 北极的三哈
# @email : Flymeawei@163.com
# @Time : 2022/12/16 21:47
""""""
from flask import g
def find_item():
print('从数据库中查询数据,通过多个不确定的条件')
print(g.item_id)
print(g.item_name)
应用:应用上下文.py
# -*- coding: utf-8 -*-
# @File : 应用上下文.py
# @author: 北极的三哈
# @email : Flymeawei@163.com
# @Time : 2022/12/16 21:25
""""""
from flask import Flask
from item import item_bp
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(item_bp, url_prefix='/item')
@app.route('/')
def hello_hello():
app.sanHa = 'Bei Ji De sanHa' # 往 app中设置任意一个参数
return 'Hello World'







![[附源码]Python计算机毕业设计Django校园招聘系统设计](https://img-blog.csdnimg.cn/e30a870609f04d73884459b52d11596f.png)












