(二十四)Flask之flask-session组件

news2024/11/18 23:25:40

目录:

  • 每篇前言:
  • Flask-session

每篇前言:

  • 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者

  • 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入门到实战》
  • 🔥🔥热门专栏推荐:《Python全栈系列教程》、《爬虫从入门到精通系列教程》、《爬虫进阶+实战系列教程》、《Scrapy框架从入门到实战》、《Flask框架从入门到实战》、《Django框架从入门到实战》、《Tornado框架从入门到实战》、《前端系列教程》。
  • 📝​📝本专栏面向广大程序猿,为的是大家都做到Python全栈技术从入门到精通,穿插有很多实战优化点。
  • 🎉🎉订阅专栏后可私聊进一千多人Python全栈交流群(手把手教学,问题解答); 进群可领取Python全栈教程视频 + 多得数不过来的计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
  • 🚀🚀加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!

在这里插入图片描述

Flask-session

session的基本使用:

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'GuHanZhe'


@app.route('/login')
def login():
    session['name_txt'] = 'guhanzhe'
    return 'Login'  


@app.route('/index')
def index():
    name = session['name_txt']
    print(name)
    return 'Index'


if __name__ == '__main__':
    app.run()
    

默认session是用如下这个类处理的(当触发存session操作的时候执行的是这个类的open_session方法):

from flask.sessions import SecureCookieSessionInterface
app.session_interface = SecureCookieSessionInterface

那么,如果我们将这个类换一个呢?

【flask-session组件闪亮登场~】

Flask-Session 是一个 Flask 扩展,用于在 Flask Web应用程序中提供会话(session)管理功能。会话是一种用于存储和跟踪用户特定数据的机制,通常用于存储用户登录状态、购物车内容、用户首选项等数据,以便在多个HTTP请求之间保持用户状态。

值得一提的是:Flask-Session 支持不同的存储选项,如文件系统、Redis、数据库等。我们可以根据项目的需求选择合适的存储后端【本文就以Redis为例~】。

在这里插入图片描述

进去看一下这个类,分析它的open_session方法:
在这里插入图片描述

第一句,上图箭头所指session_cookie_name是啥嘞?

在这里插入图片描述

其实就是获取客户端中session的Name【如上图所示】。

如果用户第一次请求,继续分析源码:

在这里插入图片描述

而在用户这个请求结束的时候会执行对应的save_session方法:

在这里插入图片描述

通过set_cookie,客户端那就会存有uuid生成的随机字符串(唯一标识,下次请求携带,服务器端就可以认出来啦~)。

RedisSessionInterface类参数如下:
在这里插入图片描述

还有第二种使用redis保存session的方法:

from flask import Flask, session
from flask.ext.session import Session
from redis import Redis


app = Flask(__name__)
app.secret_key = 'GuHanZhe'

app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_REDIS'] = Redis(host='127.0.0.1', port='6379')
app.config['SESSION_PERMANENT'] = False  # 设置会话是否是永久的
app.config['SESSION_USE_SIGNER'] = True  # 使用签名来保护会话数据
app.config['SESSION_KEY_PREFIX'] = 'myapp_'  # 自定义会话键前缀
Session(app)


@app.route('/login')
def login():
    session['name_txt'] = 'guhanzhe'
    return 'Login'


@app.route('/index')
def index():
    name = session['name_txt']
    print(name)
    return 'Index'


if __name__ == '__main__':
    app.run()

为啥这样也可以呢?

让我们进Session源码一探究竟:

在这里插入图片描述

在这里插入图片描述

上图中config['SESSION_USE_SIGNER']的作用(前面其实看到过~):

在这里插入图片描述

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

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

相关文章

2024 年 AI 垂直应用迅速落地,人人都可以获得AI红利

演示站点: https://ai.uaai.cn 技能模块 官方论坛: www.jingyuai.com 京娱AI 随着人工智能技术的持续发展与突破,2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计,从软件开发到材料科学,AI…

Nestjs与Vue实现多人聊天[简易版]

本项目是一个小demo,帮助各位理清一点开发思路,作为一个小参考,虽然技术栈是nodejs。但是其他语言也是相通的。 准备环境: Nodejs version >18.13.0Vue3Nestjssoket.io 一、初始化 打开一个路径启动cmd窗口,初始化前后端项…

YOLOv8独家改进:backbone改进 | 最新大卷积核CNN架构UniRepLKNet,ImageNet 88% | CVPR2024

💡💡💡本文独家改进:大核卷积一统多种模态!RepLK正统续作UniRepLKNet,代替YOLOv8 Backbone 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适…

​​​​​​​ARCGIS API for Python进行城市区域提取

ArcGIS API for Python主要用于Web端的扩展和开发,提供简单易用、功能强大的Python库,以及大数据分析能力,可轻松实现实时数据、栅格数据、空间数据等多源数据的接入和GIS分析、可视化,同时提供对平台的空间数据管理和组织管理功能…

GaLore的全称是“Gradient Low-Rank Projection“,翻译过来就是“梯度低秩投影“

鉴于大家对GaLore比较感兴趣,我今天试着结合论文做一个更深入的解读: GaLore的全称是"Gradient Low-Rank Projection",翻译过来就是"梯度低秩投影"。它的核心思想是通过降低优化器状态的秩,来大幅减少内存占用。 在训练大模型时,我们需要存储三类数据:模型…

响应式招标投标网站模板

模板信息: 模板编号:29165 模板编码:UTF8 模板分类:博客、文章、资讯、其他 适合行业:招标类企业 模板介绍: 下载转载自:https://www.qnziyw.cn/cmsmb/eyoucms/wenzhangzx/4332.html 本模板自带…

arcgis栅格数据处理3——定义投影(同样适用于其他类型文件)

进行数据连接时可能出现未设置投影无法链接的情况,需要先定义投影 点击最右侧“目录”,弹出带有系统工具的面板,点击“data management tools”点击“投影”,“定义投影”

大模型快速实现python3+html内容在线渲染

需求: 有一份数据需要通过前端在线展示给用户,不需要复杂的样式交互,后端服务是基于Python3实现的API接口,对前端技术不是很了解,需要快速实现该需求。类似样式即可: 思路: 如果页面不复杂&am…

搭建拓扑图发送ARP及ICMP数据报文

文章目录 搭建拓扑图设备说明通过PC1 ping PC2小结:当arp表缓存过期,而mac学习表未过期当arp表缓存未过期,而mac学习表过期使用VLAN分割广播域 搭建拓扑图 设备说明 两台PC电脑 同理另外一台电脑也是同理配置 IP地址:192.168.1.…

【架构笔记3】做“用心”之人

凡事就怕“用心”二字,但是用心做事,其实如果没有前提和详情,这本就是一句正确的废话,在一些项目开发和落地过程中,我也有了一些新的体会,自认为不是多余。 我觉得心这个词至少包含四个含义:“…

H62410Y 惠海 降压恒压芯片 仪表供电芯片 24V36V100V降3.3V5V1A

降压恒压仪表供电芯片的工作原理如下: 输入电压传感器:感知电源电压的大小,以便后续控制电压输出。 储能元件:内部有储能元件(如电容器或电感等),用于存储电荷或电能,以供后续转换…

ESP32S3部署Edge Impulse模型

在上一篇文章中我们介绍了如何使用edge impulse训练一个图片分类模型并导出arduino库文件。在这篇文章中我们将介绍如何在esp32s3中部署这个训练好的图片分类模型。 添加进Arduino库 有两种方法将下载的文件添加进Arduino库。 在Arduino IDE程序中,转到项目选项卡…

【深度学习笔记】优化算法——Adam算法

Adam算法 🏷sec_adam 本章我们已经学习了许多有效优化的技术。 在本节讨论之前,我们先详细回顾一下这些技术: 在 :numref:sec_sgd中,我们学习了:随机梯度下降在解决优化问题时比梯度下降更有效。在 :numref:sec_min…

【LeetCode: 151. 反转字符串中的单词 + 双指针】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【格与代数系统】格与代数系统汇总

【格与代数系统】格与哈斯图 目录 关系 偏序关系 偏序集 可比性 全序集 最值与上下界 上下确界 格 代数系统 性质 格与代数系统的关系 分配格 有界格 有补格 布尔代数 例1 例2 对偶格 软代数 完备格 稠密性 优软代数 小结 关系 X,Y是两个非空集合, 记若…

C语言编译成库文件的要求

keil编译成库文件 在Keil中,将C语言源文件编译成库文件通常需要进行以下步骤: 创建一个新的Keil项目,并将所需的C语言源文件添加到该项目中。 在项目设置中配置编译选项,确保生成的目标文件符合库文件的标准格式。 编译项目&…

ULBF810-ASEMI新能源整流桥ULBF810

编辑:ll ULBF810-ASEMI新能源整流桥ULBF810 型号:ULBF810 品牌:ASEMI 封装:ULBF-4 最大重复峰值反向电压:1000V 最大正向平均整流电流(Vdss):8A 功率(Pd):中小功率 芯片个数&#xff1a…

无人机手持地面站软件功能详解,无人机手持地面站软件开发人员组成及成本分析

无人机手持地面站软件是专为无人机操控和任务管理设计的移动应用,它通常集成在智能手机、平板电脑或其他便携式设备上,使得用户可以在远离无人机的地方对飞行器进行实时监控与远程控制。 主要功能详解: 1. 飞行控制与姿态显示: …

Android 音频系统

导入 早期Linux版本采用的是OSS框架,它也是Unix及类Unix系统中广泛使用的一种音频体系。 ALSA是Linux社区为了取代OSS而提出的一种框架,是一个源代码完全开放的系统(遵循GNU GPL和GNU LGPL)。ALSA在Kernel 2.5版本中被正式引入后,OSS就逐步…

力扣每日一题 猜数字游戏 阅读理解

Problem: 299. 猜数字游戏 思路 &#x1f468;‍&#x1f3eb; 灵神 复杂度 Code class Solution {public String getHint(String secret, String guess) {int a 0;int[] cntS new int[10];int[] cntG new int[10];for(int i 0; i < secret.length(); i){if(secre…