0


(二十四)Flask之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')deflogin():
    session['name_txt']='guhanzhe'return'Login'@app.route('/index')defindex():
    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')deflogin():
    session['name_txt']='guhanzhe'return'Login'@app.route('/index')defindex():
    name = session['name_txt']print(name)return'Index'if __name__ =='__main__':
    app.run()

为啥这样也可以呢?

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

在这里插入图片描述

在这里插入图片描述

上图中

config['SESSION_USE_SIGNER']

的作用(前面其实看到过~):

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_44907926/article/details/136616424
版权归原作者 孤寒者 所有, 如有侵权,请联系我们删除。

“(二十四)Flask之flask-session组件”的评论:

还没有评论