Flask 学习-63.Session 使用
前言
Session是在 cookies 的基础上实现的,并且在 cookies 中使用加密的签名。这意味着用户可以查看 cookie 的内容, 但是不能修改它,除非它知道签名的密钥。
要使用会话,你需要设置一个密钥 SECRET_KEY
配置SECRET_KEY
1.使用固定的SECRET_KEY
from flask import Flask,session
app = Flask(__name__)
app.config['SECRET_KEY'] = 'xxxxx' # 自己设置一个
2.使用随机生成器来生成漂亮的随机值
from flask import Flask, make_response, request
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24) # 随机生成
session 使用
完整示例
from flask import Flask, make_response, request, session
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24) # 随机生成
@app.route('/set')
def set_session():
"""
设置session
"""
session['username'] = 'yoyo'
session['admin'] = 'yes'
return 'success'
@app.route('/get')
def get_seesion():
"""获取session"""
username = session.get('username')
return username
@app.route('/delete')
def delete_session():
"""删除session"""
print(f"删除前:{session.get('username')}")
session.pop('username')
# 或者
# session['username'] = False
print(f"删除后:{session.get('username')}")
return 'success'
@app.route('/clear')
def clear_session():
"""清除session中所有数据"""
session.clear()
print(f"删除后:{session}")
return 'success'
if __name__ == '__main__':
app.run()
在浏览器中看到session是以cookie方式保存的
session有效期
如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束。
- session.permanent = True在flask下则可以将有效期延长至一个月。下面有方法可以配置具体多少天的有效期。
- 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
- 如果设置了session的permanent属性为True,那么过期时间是31天。
- 可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。
使用示例
@app.route('/set')
def set_session():
"""
设置session
"""
session['username'] = 'yoyo'
session['admin'] = 'yes'
session.permanent = True # 长期有效,一个月的时间有效
return 'success'
全局配置
给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间
1.引入包:from datetime import timedelta
2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
3.设置:session.permanent = True
from flask import Flask,session
from datetime import timedelta
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
@app.route('/set')
def set_session():
"""
设置session
"""
session['username'] = 'yoyo'
session['admin'] = 'yes'
session.permanent = True # 长期有效,一个月的时间有效
return 'success'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-09-08 python测试开发django-120.bootstrap-table表格添加操作按钮(查看/修改/删除)
2021-09-08 python测试开发django-119.model_to_dict会漏掉DateTimeField字段
2021-09-08 python测试开发django-118.json 解析查询数据库 datetime 格式问题
2021-09-08 python测试开发django-117.bootstrapTable结合Paginator分页器查显示表格
2020-09-08 pytest文档54-Hooks函数terminal打印测试结果(pytest_report_teststatus)