【Flask框架】——21 Flask上下文

news2024/9/22 15:25:41

在这里插入图片描述

在这里插入图片描述


上下文:即语境,语意,在程序中可以理解为在代码执行到某一时刻时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情。

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,在代码不方便直接操作flaskapp对象时,可以操作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'

在这里插入图片描述

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UDP的报文结构和注意事项

UDP的报文结构和注意事项一、传输层协议二、UDP报文结构一、传输层协议 传输层实现了端到端之间的传输,重点关注的是起点和终点。 核心的协议有两个: 二、UDP报文结构 大部分教科书给出的报文结构都是这样的: 其实只是为了排版方便~~ 实…

关于进程的几个问题

作者:~小明学编程 文章专栏:JavaEE 格言:热爱编程的,终将被编程所厚爱。 今天给大家分享几个关于进程的小问题 1.什么是进程? 2.进程是怎么管理的? 3.进程里面的PCB里都有啥? 4.进程的调度是怎…

解释器模式

文章目录解释器模式1.解释器模式的本质2.何时选用解释器模式3.优缺点4.解释器模式的结构5.实现计算器加减操作解释器模式 当想解析一个文件或者其他内容时,可以根据规律自己定义一种文法,并定义一个解释器,然后解析这种文法,以达到…

MATLAB-自定义函数拟合(fittype-高斯拟合)

在回归拟合分析时,一般情况下,MATLAB会直接提供常用的类型,用fittype创建拟合模型,至于MATLAB具体提供了哪些模型,参见帮助“List of library models for curve and surface fitting”,如果库中没有自己想要的拟合表达式形式,可以自己进行定义,具体介绍如下: 1. fitty…

嵌入式:ARM间接寻址、变址寻址与多寄存器寻址

文章目录寄存器间接寻址基址加偏址寻址(变址寻址)偏移地址传送数据类型块拷贝寻址(多寄存器寻址)块拷贝寻址示例寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如…

尚医通 (三十七) --------- 定时任务与统计

目录一、就医提醒1. 搭建定时任务模块 service-task2. 添加就医提醒处理二、预约统计1. ECharts2. 获取医院每天平台预约数据接口3. 添加 feign 方法4. 搭建 service-statistics5. 前端展示一、就医提醒 我们通过定时任务,每天 8 点执行,提醒就诊。 1.…

[附源码]Python计算机毕业设计Django校园招聘系统设计

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Android Accessibility知识分享

工具 工欲善其事,必先利其器。下面我们介绍一下工具来发现我们的accessibility问题。感谢这篇文章的分享:https://www.kodeco.com/240-android-accessibility-tutorial-getting-started Lint:这个工具是google提供的,在android …

python--面向对象以及其三大特性(封装、继承、多态)

文章目录前言一、面向过程二、 面向对象三、面向对象的三大特性一、封装二、继承私有属性和私有方法三、多态四、高级特性单例模式前言 这一节主要学习面向对象以及面向对象的三大特性:封装、继承、多态;还有高级特性:类方法、静态方法、pro…

【OpenFeign】【源码+图解】【二】注册OpenFeign接口的实例

【OpenFeign】【源码图解】【一】HelloWorld及其工作原理 目录3. 注册OpenFeign接口的实例3. 注册OpenFeign接口的实例 从HelloWorld中我们看到需要显示加入**EnableFeignClients注解才能开启openFeign的功能,因此它就成为我们分析openFeign**的入口,先…

Chrony时间同步服务

目录 一、时间同步 1.概念 2.时间同步在运维工作中的作用 3.时间同步完成方法 (1)NTP时间服务(centos 6 ) (2)Chrony时间服务 二、Chrony时间服务 1.Chrony介绍 2.Chrony的优点 三、Chrony安装 …

逻辑回归(Logistic Regression)原理及过程

目录 一:逻辑回归简介 二:逻辑回归原理 三:逻辑回归 损失函数 四:逻辑回归 梯度下降算法 五:逻辑回归 过程 一:逻辑回归简介 Logistic模型是1938年Verhulst-Pearl在修正非密度方程时提出来的&#xf…

算法刷题打卡第49天:排序数组---计数排序

排序数组 难度:中等 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums [5,2,3,1] 输出:[1,2,3,5]示例 2: 输入:nums [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]计数排…

我与世界杯的故事——达利奇:铜牌闪耀着金光

目录 克罗地亚球队的历史 奇迹出现 心得总结 克罗地亚球队的历史 克罗地亚球队拥有悠久的历史: 1998年首次亮相法国世界杯,克罗地亚就以季军的战绩惊艳众人。 2018年的俄罗斯世界杯,虽然格子军团在决赛中不敌强大的法国,遗憾地…

<Linux进程通信之共享内存>——《Linux》

目录 一、system V共享机制 1.共享内存示意图 2.共享内存数据结构 3.共享内存函数 3.1shmget函数 3.2 shmat函数 3.3 shmdt函数 3.4 shmctl函数 3.5 实例代码: 3.6 结果演示: 4. 创建共享内存 5. 基于共享内存与管道进行访问控制的共享内存读…

(P4)Python plt显示图像

Python plt显示图片 本地可以显示,服务器操作不太行。 plt.plot(x,y) plt.imshow(image) plt.show() # 显示图像(曲线/图片都需要这一行) plt.savefig(xx.png) # 保存图片 fig.savefig(xx.png) 功能相同 # 保存图片在本地执行失败&#xff…

Elasticsearch学习笔记

Elasticsearch学习笔记 ----第1章 Elasticsearch概述-01-开篇02-技术选型03-教学大纲-第2章 Elasticsearch入门-04-入门-环境准备05-入门-RESTful & JSON06-入门-Postman客户端工具07-入门-倒排索引08-入门-HTTP-索引-创建09-入门-HTTP-索引-查询 & 删除10-入门-HTTP-…

Linux 调试之 TRACE_EVENT(一)

文章目录前言一、TRACE_EVENT简介二、TRACE_EVENT() 结构2.1 TRACE_EVENT简介2.2 trace_sched_switch示例2.2.1 Name2.2.2 Prototype2.2.3 Arguments2.2.4 Structure2.2.5 Assignment2.2.6 Print2.3 Format file2.3.1 tracing/events/2.3.2 perf2.3.3 bpftrace2.3.4 bcc2.3.5 S…

逻辑回归 鸢尾花分类预测

目录 一:加载数据 二:数据集划分 三:选择算法 四:网格模型 超参数最优解 五:鸢尾花分类预测 六:预测与实际比对 七:完整源码分享 一:加载数据 from sklearn.datasets import…

Jenkins启动项目时报错问题

问题 在工作中使用jenkins进行项目部署启动时遇到问题,项目构建成功但是发布时一直显示时间增加,但是项目本身并没有问题,使用传统方法部署项目也能正常启动。报错如下图所示: 解决方法 是由于jenkins文件中打印日志的问题&am…