flask的session用法和常识

一文掌握flask的session用法

session操作像字典一样

flask的session是使用werkzeug的SecureCookie,它通过secretkey加密session是加密后保存在客户端的
不像django一样session默认保存到数据库,当然可以通过修改flask接口实现保存在数据库(redis,memcached,mysql)

详情请见——https://www.cnblogs.com/brifuture/p/9851000.html

flask默认session操作

  • session删除某一字段
    session.pop(“user”, None)
  • session设置值
    session[“user”] = ‘wxw’
  • session获取值
    session.get(‘username’)或者是session[“username”]
  • 清除session
    session.clear

如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
如果设置了session的permanent属性为True,那么过期时间是31天。
可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。

app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)

1
2
3
4
@app.route('/session')
def set_session():
session['username'] = 'wxw'
session.permanent = True

flask的session是使用werkzeug的SecureCookie,它通过secretkey加密session是加密后保存在客户端的
不像django一样session默认保存到数据库,当然可以通过修改flask接口实现保存在数据库(redis,memcached,mysql)
详情请见——https://www.cnblogs.com/brifuture/p/9851000.html

flask_session模块用法

通过这个模块可以改变flask默认session保存在浏览器的弊端,实现session保存在redis、mongodb、mysql和file中。

常用配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
app.config['SESSION_TYPE'] = 'sqlalchemy'  # session类型为sqlalchemy、reids、filesystem、memcached、mongodb
app.config['SESSION_PERMANENT'] = True # 如果设置为True,则关闭浏览器session就失效。
app.config['SESSION_USE_SIGNER'] = False # 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_KEY_PREFIX'] = 'session:' # 保存到session中的值的前缀


app.config['SESSION_SQLALCHEMY'] = db # SQLAlchemy对象
app.config['SESSION_SQLALCHEMY_TABLE'] = 'session' # session要保存的表名称

app.config['SESSION_REDIS'] = redis.Redis(host='127.0.0.1', port='6379', password='123123') # 用于连接redis的配置


app.config['SESSION_MONGODB_DB'] = 'mongo的db名称(数据库名称)'
app.config['SESSION_MONGODB_COLLECT'] = 'mongo的collect名称(表名称)'



app.config['SESSION_FILE_THRESHOLD'] = 500 # 存储session的个数如果大于这个值时,就要开始进行删除了
app.config['SESSION_FILE_MODE'] = 384 # 文件权限类型

小伟科技 wechat
python爱好者公众号—每日学习python必备
欢迎打赏支持!