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

目录:

  • 每篇前言:
  • 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']的作用(前面其实看到过~):

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

qt-C++笔记之使用Cmake来组织和构建QWidget工程项目

qt-C笔记之使用Cmake来组织和构建QWidget工程项目 —— 杭州 2024-03-10 code review! 文章目录 qt-C笔记之使用Cmake来组织和构建QWidget工程项目1.运行2.文件结构3.CMakeLists.txt4.main.cpp5.widget.h6.widget.cpp7.widget.ui 1.运行 2.文件结构 3.CMakeLists.txt 代码 c…

批量文本处理:轻松提取与整理大量文本内容

在数字时代,内容创作已成为企业与个人传递信息、展示品牌形象的重要手段。然而,面对海量的文本信息,如何高效地提取关键内容,并将其转化为引人注目的标题和宣传软文,成为了摆在我们面前的一大挑战。 第一步&#xff0…

电脑桌面图标变大了怎么恢复?5种简单方法帮你恢复正常

在使用电脑的过程中,有时候我们可能会遇到桌面图标变得异常大的情况。这种问题不仅影响了桌面的整洁度,也可能会影响我们的操作体验。电脑桌面图标变大了怎么恢复?如果你也遇到了这种情况,不用担心,本文将为你介绍五种…

【C++从0到王者】第五十二站:跳表

文章目录 一、什么是跳表二、skiplist的效率三、skiplist的实现 一、什么是跳表 skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。 skiplist,…

c++的STL(3)-- deque容器

目录 deque概述 deque的内存模型 注意: 1. deque的默认构造(和vector类似) 代码: 2. deque的有参构造(和vector类似) 代码: 3. deque容器在首部和尾部添加或者元素 代码: 相关知识点: 4. deque容器的元素个数 (和vector类似) 代码: 5. deque在指定位置插入元素(和…

Linux搭建ftp服务

使用yum 进行安装 # 在线安装FTP yum install -y vsftpd 安装完成后查看ftp状态 # 查看ftp状态 systemctl status vsftpd.service # 启动ftp状态 重启:restart,停止:stop,开机自启:enable,关闭开机自启&…

【小黑送书—第十二期】>>一本书讲透Elasticsearch:原理、进阶与工程实践(文末送书)

Elasticsearch 是一种强大的搜索和分析引擎,被广泛用于各种应用中,以其强大的全文搜索能力而著称。 不过,在日常管理 Elasticsearch 时,我们经常需要对索引进行保护,以防止数据被意外修改或删除,特别是在进…

图片二维码能长期扫码展示吗?在线图片快速生码的文字教学

很多人在制作图片二维码的时候,比较关注的问题一个是扫码次数,另一个是二维码有效期,那么满足这两个需求的图片二维码该如何制作呢?想要制作不限制扫码次数并且长期有效的图片二维码,大家可以通过图片二维码生成器的功…

分库分表浅析原理

数据库存放数据大了,查询等操作就会存在瓶颈,怎么办? 1. 如果是单张表数据大了,可以在原有库上新建几张表table_0、table_1、table_2、.....table_n 写程序对数据进行分表: --这里提供一种一种分表策略,这里只需维护…

动态规划-背包问题 分析+代码

这里写自定义目录标题 介绍背包问题过程分析例题题目说明代码输出结果 介绍背包问题 背景:在现实生活中,我们常常会面临需要在有限空间内做出最优选择的情况,比如旅行时需要选择携带哪些物品,或者在资源有限的情况下选择最有利可图…

EASY-LASER激光对中仪维修E710镭射仪联轴器维修

Easy-Laser激光对中仪维修常见故障:触摸屏损坏(屏碎,不显示,黑屏,蓝屏,无背光等),对中仪电路板损坏,对中仪接收装置电路板维修,对中仪发射控制装置电路板等均…

CubeMX使用教程(2)——如何点亮LED

在上一章,我们完成了CubeMX的环境配置,这一章我们通过CubeMX来完成点亮LED的工作。 通过LED原理图可知,如果我们要点亮LD1(第一个灯),它对应开发板的PC8端口,因此我们应该在CubeMX中将PC8配置为…

OpenCV实战--人脸跟踪(级联分类器)

1、前言 人脸识别是基于人的脸部特征信息进行身份识别的--种生物识别技术,也是计算机视觉重点发展的技术。 机械学习算法诞生之后,计算机可以通过摄像头等输入设备自动分析图像中包含的内容信息,随着技术的不断发展,现在已经有了多种人脸识别的算法。 人脸跟踪是让计算机…

Java 语言“编译与解释并存”

程序语言的执行方式 将高级编程语言按照程序的执行方式分为两种: 编译型:编译型语言open in new window 会通过编译器open in new window将源代码一次性翻译成可被该平台执行的机器码。一般情况下,编译语言的执行速度比较快,开发…

微信jssdk获取定位计算距离

微信网页jssdk开发文档获取地理位置接口文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#36 实现: const wx require(weixin-js-sdk) const jsApiList [ getLocation ]/*** 获取定位* param {*} configData 接口获取*…

云流化技术方案的优势

数字化的时代,许多新兴的技术都逐渐走进人们的视野,云流化作为一种新兴的技术在各个领域发挥着越来越重要的作用,也为我们带来了方便快捷的使用体验,尤其是在虚拟仿真和数字孪生领域,但是有的人可能听到这个词会比较陌…

armv8/armv9不同特权程序之间的跳转模型

目录 1、前言2、4个特权等级/4个安全状态之间的跳转模型3、启动时镜像之间的跳转模型4、runtime程序之间的跳转模型推荐 本文转自 周贺贺,baron,代码改变世界ctw,Arm精选, armv8/armv9,trustzone/tee,secur…

第二证券:金价创出历史新高 黄金主题类基金“熠熠闪光”

2024年3月以来,黄金价格走出了一轮波澜壮阔的行情。上海黄金(SHFE黄金)接连8日收涨,累计涨幅近6%,3月9日夜盘创出511.66元/克的前史最高价,最新收盘价为509.32元/克,相同是前史新高。 国际金价…

福州景湖佳园120平现代风格装修,简洁有层次。福州中宅装饰,福州装修

在现代风格的装修设计中,配色方案是决定整体氛围的关键因素。以福州景湖佳园的120平米装修案例为例,设计师巧妙地运用了灰、白、蓝三种颜色,打造出了一处既简洁又富有层次感的居住空间。 首先,灰色是现代风格中非常常见的一种色彩…

C++:继承与派生

为什么会有继承这样的语法呢??试想这样一个场景:假设我们这个App需要去获取不同类型用户的数据,并进行分类,那么就需要我们去写对应不同的类,比如说学生、老师、军人、公司职工…………每个类都需要有名字、…