📜  Flask - 直接在会话中存储对象 [重复] - Python (1)

📅  最后修改于: 2023-12-03 14:41:13.372000             🧑  作者: Mango

Flask - 直接在会话中存储对象 [重复] - Python

在Flask中存储对象,最简单的方式就是通过会话(session)来实现。

会话(session)是什么

会话是服务器用来存储和跟踪每个独立用户的数据的一种机制。会话数据存储在服务器端,可以保存变量、登录状态等信息,通常使用cookie或URL重写来跟踪会话。在Flask中,会话(session)是一个字典对象,可以通过Flask的请求对象request获取。

实现

在Flask中直接在会话(session)中存储对象的方式很简单,具体步骤如下:

  1. 引入Flask与session对象:

    from flask import Flask, session
    
  2. 初始化Flask应用:

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

    为了使用会话(session),需要在Flask应用中设置一个secret_keysecret_key用于加密会话数据,确保安全。

  3. 在Flask路由函数中存储和读取数据:

    @app.route('/')
    def index():
        # 存储数据
        session['username'] = 'user'
        
        # 读取数据
        username = session.get('username')
        
        return 'Hello, {}'.format(username)
    

    在这个例子中,我们存储了一个键值对,键为username,值为user。然后我们可以通过session.get('username')方法来获取这个值。

注意事项

要使用会话(session)必须进行一些配置。在Flask应用中配置会话(session)有两种方式:

  1. 存储在服务器端

    app.config['SESSION_TYPE'] = 'filesystem'
    

    如果使用这种方式,需要安装Flask-Session扩展,使用方法如下:

    # 安装Flask-Session
    pip install Flask-Session
    
    # 引入Flask-Session
    from flask_session import Session
    
    # 初始化Flask-Session
    app.config['SESSION_TYPE'] = 'filesystem'
    
    sess = Session()
    sess.init_app(app)
    
  2. 存储在客户端

    app.config['SESSION_TYPE'] = 'redis'
    app.config['SESSION_REDIS'] = redis.from_url('redis://localhost:6379')
    

    如果使用这种方式,需要安装Flask-Redis扩展。

结论

在Flask中直接在会话(session)中存储对象非常方便,可以避免使用数据库或其他存储方式的复杂性。在实现过程中需要注意会话(session)的安全性和正确初始化应用。