问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

flask 的 g 和session 的区别怎样理解

发布网友 发布时间:2022-05-01 20:37

我来回答

3个回答

懂视网 时间:2022-05-10 10:15

本篇文章给大家带来的内容是关于python中flask的Session设置的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

什么是Session?

cookie: 客户端浏览器的缓存;
session: 服务端服务器的缓存;

Session 和 Cookie类似,都是通过字典管理 key-value对。
Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

读写Session可以通过操作字典的方式。

import random

from flask import Flask, session

app = Flask(__name__)
# 因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,
# 只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符
app.config['SECRET_KEY'] = random._urandom(24)

# 设置session值;
@app.route('/')
def index():
 # 如何设置session的key-value值
 session['name']='sheen'
 return 'hello,sheen'

@app.route('/get/')
def get():
 # 获取Session的key-vlaue值
 print(len(session))
 return session.get('name')

@app.route('/delete/')
def delete():
 # 删除Session的key-vlaue值
 session.pop('name')
 print(session.get('name'))
 return 'session was deleted'

app.run()

857389279-5bd136fe1d67b_articlex.png

1077227666-5bd13730b430f_articlex.png

2439795727-5bd137641ac28_articlex.png

3077101220-5bd137990c641_articlex.png

热心网友 时间:2022-05-10 07:23

最近一直在研究Flask,由于gfirefly中提供的Http接口使用了Flask,以前都是写一些游戏中简单的操作,最近涉及到Flask的方面比较多,所以就认真研究了下。对Flask的request context和app context略有心得,所以和小伙伴们分享一下Flask的request原理。
在我们视图中要使用request时只需要from flask import request就可以了
很好奇在多线程的环境下,是如何保证request没有混乱的
在flask.globals.py中
[python] view plain copy 在CODE上查看代码片派生到我的代码片
def _lookup_req_object(name):
top = _request_ctx_stack.top
if top is None:
raise RuntimeError('working outside of request context')
return getattr(top, name)

_request_ctx_stack = LocalStack()
request = LocalProxy(partial(_lookup_req_object, 'request'))
session = LocalProxy(partial(_lookup_req_object, 'session'))
其实可以看到不管request还是session最后都是通过getattr(top, name)获取的,也就是说肯定有一个上下文
对象同时保持request和session。我们只要一处导入request,在任何视图函数中都可以使用request,
关键是每次的都是不同的request对象,说明获取request对象肯定是一个动态的操作,不然肯定都是相同的request。这里的魔法就是_lookup_req_object函数和LocalProxy组合完成的。
LocalProxy是werkzeug.local.py中定义的一个代理对象,它的作用就是将所有的请求都发给内部的_local对象
[python] view plain copy 在CODE上查看代码片派生到我的代码片
class LocalProxy(object):
def __init__(self, local www.hbbz08.com , name=None):
#LocalProxy的代码被我给简化了,这里的local不一定就是local.py中定义的线程局部对象,也可以是任何可调用对象
#在我们的request中传递的就是_lookup_req_object函数
object.__setattr__(self, '_LocalProxy__local', local)
object.__setattr__(self, '__name__', name)

def _get_current_object(self):
#很明显,_lookup_req_object函数没有__release_local__
if not hasattr(self.__local, '__release_local__'):
return self.__local()
try:
return getattr(self.__local, self.__name__)
except AttributeError:
raise RuntimeError('no object bound to %s' % self.__name__)

def __getattr__(self, name):
return getattr(self._get_current_object(), name)

热心网友 时间:2022-05-10 08:41

  session 是可以跨 request 使用的,session 的数据是经过加密后存储在 cookie 里的,用户每次 request 都会把这些 cookie 信息发回来,从而实现跨 request 使用。
g 是面向单个 request 的,一个 request 处理完,g 里的东西就没了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孤胆枪手怎么设置局域网啊、 我家小狗刚领来,没有名字,拜托大家起个名字。 护肤品代加工 水浒Q传跨服PK是怎么回事啊 新水浒Q传什么叫PK保护状态,上号不到一分钟就被打,求解 水浒Q传 为什么要pk有什么好处? 为什么贷款每次都审核失败 有谁能说一下手机贷审核不通过的原因吗?我都审核好多次了都不能通过... 贷款审核失败是什么原因 为什么贷款未通过审核 python的session问题 python session问题 python3.5 爬虫 session怎么用 为什么说session比cookie安全?? 世态炎凉, 冷暖自知是什么意思 闪送派单员一天工作多长时间有要求吗 上午美团下午闪送可以吗? 想试试乐友APP上的乐闪送服务,会有配送时间限制吗? 欢乐谷玛雅水公园几点开放 求长江下游河段特征 请问苏州乐园水上世界几点关门,一般几点去比较好 我想做闪送员送单时有时间规定内送达吗? 长江和黄河的河段划分 苏州水上乐园什么时候开放 深圳欢乐谷什么时候是玛雅水公园开放期间? 杭州水上乐园营业到几月份,营业时间是几点到几点?还有杭州乐园和水上乐园是在一起的吗?? 杭州乐园的水上乐园几点开放?? 长江各河段的特征及利用方式是什么? 长隆水上乐园几点开门 水立方水上乐园的开放时间 python session 可以存储多大 python 通过一个函数取得的session ,另一个函数怎么调用这个sesion_百度... 求教,看python 的书时,里面提到terminal session是什么意思,怎么进入。谢谢。。。 python有操作SESSION行为方式的函数吗 哪个在线律师网比较靠谱? 菩提果为什么有粉色的 有专门提供律师行业学习的网站吗?? 菩提子有粉色的吗 华律网律师在线咨询靠谱吗 月经量大是好事还是坏事? 月经量大是什么体验 关于莲文化的~ 月经量大该怎么办呢? 粉色菩提子多少钱一颗? 莲文化的魅力有关的手抄报版面设计 哪个网站可以咨询律师 律师协会的主要职责 混凝土28d龄期是什么意思 C40混凝土龄期强度值表 C35混凝土抗压强度龄期7天单块值分别为36.8、36.6、15.8 请问怎么计算出代表值的?