flask初用上下文

Flask - 应用上下文 目录 一、应用上下文 二、current_app - 在任何地点,获取flask.app对象 三、g - 单次请求的数据存储字典 四、应用上下文的手动推送 一、应用上下文 官方文档 Flask的请求处理流程和上下文流程理解参考 该Flask 应用程序对象具有的属性,比如 config ,那些对视图和内访问有用的CLI命令。但是,app在项目中的模块中导入实例很容易出现循环导入... 阅读详情

需求

对于特定视图,可以提供强制要求用户登录的限制

对于所有视图,无论是否强制要求用户登录,都能获取用户身份信息

简单实现

分析

需求:
强制要求 --- 可以通过装饰器, 进行登录限制的先前处理
所有视图要求 --- 可以采用请求勾子

大致流程:
请求---请求勾子---视图(普通和登录) --> 强制登录 装饰器

技术点:
g变量 勾子函数 @app装饰器等

代码

from flask import Flask, abort, g

app = Flask(__name__)

@app.before_request							# 勾子, 每次请求前都会执行, 获取身份
def authentication():
	# 一系列验证, 获取
	pass
	# 找出用户身份
	if user_id:
		g.user_id = user_id					# 输出id
	else:
		g.user_id = None

'登录判定的装饰器, 装饰视图函数, 实现登录限制访问'
def login_required(func):					# 传入函数
	def wrapper(*args, **kwargs):
		if g.user_id is None:
			abort(401)
		else:
			return func(*args, **kwargs)	# 判定通过, 返回该函数
	return wrapper
	
@app.route("/"):							# 路由装饰器在最外层
@login_required								# 装饰视图函数, 进行判定, 实现限制
def index():
	return '用户id是{}'.format(g.user_id)

拓展

'app_context'
创建一个'应用上下文'环境, 可以使current_app, g 在flask应用外(如shell)中能被使用。
# 用法:
with app.app_context():
	print(current_app.redis)
'request_context'
创建一个'请求上下文'环境, 可以使request, session在flask应用外(如shell)中能被使用。
# 用法
with app.request_context(environ):		# environ = wsgi字典数据
	print(request.path)

上下文实现原理简单理解

'Threadlocal 线程局部变量'

from flask import request
request -->全局变量

# request.args.get()
实际上 request.args = {  } 有很多值, 

get也是封装方法, get可以取对应线程的值
通过with来建立变量与线程间的所属关系, 即上下文环境, 实现调用时能取到对应值的功能。
【python】flask执行上下文context,请求上下文和应用上下文原理解析 执行上下文:即语境,语意,在程序中可以理解为在代码执行到某一行时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情。 请求上下文对象:保存了 Flask 程序运行过程中的一些信息[变量、函数、类与对象等信息]。 应用程序上下文,用于存储flask应用实例对象中的变量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量。 阅读详情

相关推荐

CATIA_DELMIA_V5R2019安装包下载及安装教程破解

CATIA_V5R2019/DELMIA_V5R2019安装包下载及安装教程破解

一只机械工装熊的博客 8405

flask上下文

g 作为 flask 程序全局的一个临时变量,充当者中间媒介的作用,我们可以通过它传递一些数据,g 保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别。执行上下文:即语境,语意,在程序中可以理解为在代码执行到某一行时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情。所以每次客户端发生不同的HTTP请求时,得到的request和session的对象都是同一个,但是内部的数据都是不一样的。

blank_memory_的博客 930

【华为OD机试】真题-小明减肥(Java)

摘要:题目要求从n个可选运动中选取k个,使其卡路里总和等于目标值t,统计可行方案数。输入包含运动数量n、目标t、选择数量k及卡路里数组。采用DFS回溯算法,通过剪枝优化(提前终止无效分支),分别处理选择/不选当前运动的情况。当遍历完所有运动且满足条件时计数。示例输入"4 3 2"和"1 2 3"时,输出2(对应两种选择组合)。Java实现通过递归完成搜索,最终输出符合条件的方案总数。(149字)

u014481728的博客 287

深入探究 Flask 的应用和请求上下文

因此,浏览器会向 Web 服务器(如 Nginx 或 Apache)发送请求,以请求特定的 URL(上图中的“/”URL)。的概念,用于存储特定于线程的数据,它既是“线程安全的,又是线程唯一的”。现在 Flask 应用程序已准备好处理数据(在视图函数中),并且数据已在应用程序和请求上下文堆栈中准备就绪,我们需要一种方法来连接这两部分......在上一节中,我们了解了在 Flask 中处理请求时如何使用应用程序上下文堆栈和请求上下文堆栈。同时,请求上下文存储需要处理以生成响应的特定于请求的数据。

Azx的博客 1493

独立游戏之路:Tap篇 -- 个人开发者上架TapTap步骤和注意事项

作为一名游戏开发者,将自己的独立游戏上架到 TapTap 平台是一个不错的选择。TapTap 是一个拥有大量用户的游戏社区平台,上架游戏可以让更多的玩家发现和体验你的游戏。TapTap 是一个游戏社区平台,用户可以在平台上下载和分享游戏。TapTap 拥有大量的用户,并且用户活跃度高,这为独立游戏开发者提供了一个很好的展示和推广平台。进入TapTap开发者服务后台。

陈言必行 -- Unity游戏开发领域优质博主 6431

1 电科院FTU检测标准学习笔记-外观检查

作者简介:本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验。

sixtome 1852

Flask上下文讲机制

在框架中,通过机制解决不同场景下的数据访问问题二者协同实现,是灵活处理请求与应用级逻辑的核心。下面从核心对象、生命周期、场景及实现维度展开解析。

wangqiang996的博客 679

基于Python的军事装备数据爬取与分析:从网页抓取到数据可视化实战

本文将详细介绍如何使用Python最新技术栈构建一个完整的军事装备数据爬虫系统。我们将从爬虫基础讲起,逐步深入到异步爬取、反反爬策略、数据存储与分析等高级主题,最终实现一个能够自动抓取、清洗、存储和分析军事装备数据的完整解决方案。文章包含大量实战代码示例,涉及requests-html、aiohttp、Playwright等现代爬虫库,以及MongoDB存储、Pandas分析和Pyecharts可视化等技术。关键词:Python爬虫、军事数据、异步爬取、反反爬、数据可视化。

2201_76125261的博客 1190

【Flask】flask上下文

上下文:即语境,语意,在程序中可以理解为在代码执行到某一时刻时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情。 Flask中有两种上下文,请求上下文和应用上下文 Flask中上下文对象:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。 一、请求上下文 思考:在视图函数中,如何取到当前请求的相关数据?比如:请求地址,请求方式,cookie等等 在 flask 中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 r

python全栈 1011

把 ABAP ALV 做成可点、可改、可保存:Interactive Editable ALV Grid 的一套落地打法

文章摘要(148字): SAP ALV报表开发中,交互式可编辑网格的实用方案需解决三个核心问题:数据展示、交互下钻与编辑保存。本文以SCARR航空公司和SFLIGHT航班数据为例,演示如何实现双击主列表下钻明细、动态切换编辑模式、精确保存修改的技术路线。关键点包括:通过PF-STATUS添加业务按钮、使用CHECK_CHANGED_DATA同步前端修改、保护关键字段避免误操作,以及变更数据的审计跟踪方法。该方案适用于SAP GUI环境下的快速业务调整需求,相比Fiori开发具有更高的实施效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 232

Abaqus数据导出技巧:轻松处理大量XY数据

通过上述三种方法,我们可以解决Abaqus中大量XY数据导出的问题。无论是使用插件、编写Python脚本,还是利用Abaqus的内置报告功能,都可以帮助我们高效地处理数据。希望这篇博客能够帮助到你,提高你在Abaqus使用过程中的数据处理效率。

m0_62153576的博客 1917

flask请求上下文

文章目录flask请求上下文**1 首先分析请求上下文对象(ctx)创立****2 把请求对象(ctx)添加到local中(入栈)****3 找到视图函数并且使用导入request对象**5 请求结束时从Local中移除上下文对象(出栈)总结: flask请求上下文 在分析上下问之前,要做好一个心理准备,因为设计到的代码会很多,需要不懂的要跟着文档自己去翻阅源码。 首先把涉及到的主要的类或者设计...

Allen 1973

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3122

Flask中的上下文(Context)

Flask中的上下文是框架提供的一种强大机制,用于在Web开发过程中管理和访问应用级别和请求级别的状态信息。会话上下文、应用全局上下文和请求上下文分别用于实现跨请求的用户状态管理、应用全局状态共享和单次请求的环境管理。通过合理使用这些上下文机制,开发者可以更加灵活地编写Flask应用程序,提高代码的可维护性和可扩展性。需要注意的是,虽然上述三类上下文在Flask中扮演着重要角色,但Flask的官方文档和社区中并没有严格规定“会话上下文”这一术语的具体实现和用法。

sheji888的专栏 1849

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Flask-上下文

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

adminwg的博客 1080

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Flask 上下文

Flask 学习笔记 一、Flask 上下文         Flask 项目中有两个上下文,一个是应用上下文(app),另外一个是请求上下文(request)。请求上下文 request 和 应用上下文 current_app 都是一个全局变量,所有请求都共享的。         Flask 有特殊的机制可以保证每次请求的数据都是隔离的,即 A 请求所产生的数据不会影响到 B 请求。所以可以直接导入 request 对象,

白菜执笔人的博客 1725

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Flask——请求上下文和应用上下文

在flask框架中,引入了上下文的概念,为了能够让大家真实的感受到上下文在flask框架中所起到的作用,所以下面我就用一个具体的需求实例来给大家进行说明,首先在我不使用上下文思路的情况下来解决这一需求,然后再改造成使用了上下文的方式,那么我们就可以更好的来对比前后的不同,从而感受到上下文的作用、原理、以及给我们带来的好处。 在实际的开发中,当用户登录之后,就会把用户登录时候的时间,IP地址这些数据...

Strict Flora的博客 9008

Flask上下文

Flask上下文 flask上下文分为 应用上下文 和 请求上下文。 1、关于wsgi WSGI(全称Web Server Gateway Interface),是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求、解析HTTP请求、发送HTTP...

__tian__的博客 502

Flask04——请求上下文和应用上下文

在flask框架中,引入了上下文的概念,为了能够让大家真实的感受到上下文在flask框架中所起到的作用,所以下面我就用一个具体的需求实例来给大家进行说明,首先在我不使用上下文思路的情况下来解决这一需求,然后再改造成使用了上下文的方式,那么我们就可以更好的来对比前后的不同,从而感受到上下文的作用、原理、以及给我们带来的好处。 在实际的开发中,当用户登录之后,就会把用户登录时候的时间,IP地址这些数据...

lingjiphp的博客 1048

Flask的上下文管理流程

应用上下文 (应用上下文包含了当前应用的信息,比如配置、URL映射、插件等。当处理请求时,Flask会自动为每个请求创建一个应用上下文。在应用上下文中,你可以访问到Flask应用对象(通常通过代理)。你可以通过手动创建一个应用上下文。请求上下文 (请求上下文包含了当前请求的信息,比如请求路径、参数、表单数据等。当一个请求到达Flask应用时,Flask会自动为这个请求创建一个请求上下文。在请求上下文中,你可以访问到请求对象(通常通过requestsessiong等代理)。

sheji888的专栏 1023

Flask学习之上下文

1.引入 如果现在有三个浏览器访问flask的应用程序,那么就会开辟三个线程子线程来访问应用程序,这个时候当然使用requset。但是request只有一份,那么是否三个线程之间会相互干扰呢,实际上flask通过Local线程隔离对象的方式来解决该问题。 2.Local from threading import Thread request = '123' class MyThrea...

Anosy_的博客 1888

Flask Python:请求上下文和应用上下文

上下文是 context 直译的叫法,在程序中用来表示代码执行过程中所处的前后环境,比如在文件操作时,文件需要打开关闭,而文件读写操作就处于文件操作的上下文环境中。请求上下文(文档点这里查看)和应用上下文(文档点这里查看)1、请求上下文(Request Context):当处理请求时,请求相关的信息会被存储在请求上下文中,例如请求参数、请求头、请求方法、当前的URL以及与请求相关的其他信息。请求上下文可以通过request对象访问。

snow_love_xia的博客 1463

Flask—上下文

一、线程安全 1. 定义 在多线程中,同一个进程中的多个线程是共享一个内存地址的,多个线程操作数据时,就会造成数据的不安全,所有我们就要加锁。但是对于一些变量,如果仅仅只在本线程中使用,怎么办? 方法1:可以通过全局的字典,key为当前线程的线程ID,value为具体的值。 方法2:使用threadding.local方法 2. threa...

HuQi 544

Flask框架——flask3.x-上下文管理机制

本篇文章旨在分析flask3.x及更新版上下文管理机制。由于目前关于flask的上下文管理机制的文章主要是分析以栈结构的形式进行管理,处于flask2.x相关版本。而flask3.x版本时代其上下文管理机制是引入了python中的ContextVar类进行管理,目前没有太多文章进行其的分析,所以此文章为想了解flask3.x版本的上下文管理机制的群体提供了借鉴作用

2402_83280737的博客 985

Flask系列教程(31)——Flask上下文

Flask上下文 如果想深入学习Flask,可以观看这套免费Flask教学视频:零基础:Flask入门到项目实战 Flask项目中有两个上下文,一个是应用上下文(app),另外一个是请求上下文(request)。请求上下文request和应用上下文current_app都是一个全局变量。所有请求都共享的。Flask有特殊的机制可以保证每次请求的数据都是隔离的,即A请求所产生的数据不会影响到B请...

NunchakusHuang的专栏 1365
上一篇: SqlAlchemy的使用
矗禾
博客等级 码龄7年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值