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

03-13 阅读 0评论

目录:

  • 每篇前言:
  • Flask-session

    每篇前言:

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

      (二十四)Flask之flask-session组件,(二十四)Flask之flask-session组件,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,管理,第1张
      (图片来源网络,侵删)
    • 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入门到实战》
    • 🔥🔥热门专栏推荐:《Python全栈系列教程》、《爬虫从入门到精通系列教程》、《爬虫进阶+实战系列教程》、《Scrapy框架从入门到实战》、《Flask框架从入门到实战》、《Django框架从入门到实战》、《Tornado框架从入门到实战》、《前端系列教程》。
    • 📝​📝本专栏面向广大程序猿,为的是大家都做到Python全栈技术从入门到精通,穿插有很多实战优化点。
    • 🎉🎉订阅专栏后可私聊进一千多人Python全栈交流群(手把手教学,问题解答); 进群可领取Python全栈教程视频 + 多得数不过来的计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
    • 🚀🚀加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!
      (二十四)Flask之flask-session组件

      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为例~】。

      (二十四)Flask之flask-session组件,(二十四)Flask之flask-session组件,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,管理,第3张
      (图片来源网络,侵删)

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

      进去看一下这个类,分析它的open_session方法:

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

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

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

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

      (二十四)Flask之flask-session组件,(二十四)Flask之flask-session组件,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,我们,管理,第7张
      (图片来源网络,侵删)

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

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

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

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

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

      RedisSessionInterface类参数如下:

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

      还有第二种使用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源码一探究竟:

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

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

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

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


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]