flask-session 使用

一. session 基本的使用

导入

from flask import session

session 基本操作

# 1. 设置值
session['name'] = name
# 2. 获取值
name = session.get('name')
# 3. 删除值
session.pop('name')
# 4. 清除所有
session.clear()

二. session 存入redis中

1. 基本使用

1. flask内置的session,把数据加密后保存到浏览器中

2. 我们重写open_session和save_session,把数据保存到服务端的 redis 中

1.1 方式一:

安装 flask-session

pip3 install flask-session

保存到redis中

from flask import Flask

# 导入需要的模块
from flask_session.sessions import RedisSessionInterface
from redis import Redis

app = Flask(__name__)

# 连接redis
conn = Redis(host='127.0.0.1', port=6379)
# 重写方法
app.session_interface = RedisSessionInterface(redis=conn, key_prefix='lqz-')


@app.route('/')
def index():
    session['name'] = 'lqz'
    return '首页'


if __name__ == "__main__":
    app.run(host='127.0.0.1', port=8000)

1.2 方式二:

1. 其原理: Session(app)--->就是根据配置文件,生成 RedisSessionInterface 对象,赋值给app.session_interface

安装 flask-session

pip3 install flask-session

保存到redis中

'''----------------------------------settings.py 文件---------------------------------------'''

from redis import Redis

DEBUG = True
SECRET_KEY = 'KSNDKJVNSJKDVDV'

# 使用存储位置类型, 此选择为 redis,
SESSION_TYPE = 'redis'
# 设置连接地址及端口
SESSION_REDIS = Redis(host='127.0.0.1', port=6379)

'''----------------------------------app.py 文件---------------------------------------'''

from flask import Flask, session
from flask_session import Session

app = Flask(__name__)

# 导入配置文件
app.config.from_pyfile('./settings.py')

# 使用 Session 包裹一下
Session(app)


@app.route('/')
def index():
    session['name'] = 'lqz'
    return '首页'


if __name__ == "__main__":
    app.run(host='127.0.0.1', port=8000)

2. 让cookie,关闭浏览器就失效

1. expires 设置为 None

    res = make_response('hello')
    res.set_cookie('name', 'lqz', expires=None)

2. session设置的cookie,关闭浏览器失效

    2.1 使用方式一:permanent 设置为 None
        app.session_interface = RedisSessionInterface(redis=conn, key_prefix='lqz',permanent=False)

    2.2 使用方式二:配置文件加入
        SESSION_PERMANENT=False

posted @ 2023-05-18 09:51  codegjj  阅读(158)  评论(0)    收藏  举报