flask操作session:
- 设置session:通过
flask.session
就可以操作session了。操作session
就跟操作字典是一样的。session['username']='zhiliao'
。 - 获取session:也是类似字典,
session.get(key)
。
删除session
- 删除session中的值:也是类似字典。可以有三种方式删除session中的值。
session.pop(key)
。del session[key]
。session.clear()
:删除session中所有的值。
# coding:utf-8
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(hours=5)
@app.route('/')
def hello_world():
session['username'] = 'saber'
# session permanent 持久化置为True则session课保存31天.
session.permanent = True
return 'Hello World!'
@app.route('/get_session/')
def get_session():
username = session.get('username')
return username or u'no session set'
@app.route('/delete_session/')
def delete_session():
# clear session 'username'
session.pop('username')
# clear all session.
session.clear()
return 'delete success.'
设置session的有效期:
如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.permanent=True,那么就会默认在31天后过期。如果不想在31天后过期,那么可以设置app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2)
在两个小时后过期。
记住我”选项
1.在登录网页界面,下面有一个“记住我”选项,如果点击了则设置session的有效期长一点。就是设置这个!
# 设置session
@app.route('/')
def set():
session['username'] = 'liefyuan'
session.permanent = True # 长期有效,一个月的时间有效
return 'success'
配置7天有效
一种更先进的配置有效期的方法:(比如配置7天有效)
1.引入包:from datetime import timedelta
2.配置有效期限:app.config[‘PERMANENT_SESSION_LIFETIME’] = timedelta(days=7) # 配置7天有效
3.设置:session.permanent = True
#encoding: utf-8
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天有效
# 设置session
@app.route('/')
def set():
session['username'] = 'liefyuan'
session.permanent = True
return 'success'
删除不生效
使用flask 默认sessio是存储在浏览器的cookie中,当请求返回时会将session写在cooKie中,但是在写的时候,默认并不是每次都重新写入
比如下例子
# 原来session {'k1': 1, 'k2': 'V2'}
session['user_info']['k1']=2
# 如此修改内部值session 不重新写入
只有当调用session对象的setitem方法或者deleteitem方法才会将 modify 变成true
# 方法1 session.modified = True
# 方法2 设置配置参数 SESSION_REFRESH_EACH_REQUEST= True
推荐使用方法2 如果设置有超时时间的话需要访问时候刷新
在登录时候需要设置一下session.parmanent=True
session使用redis的配置
SESSION_KEY_PREFIX = 'hello' # redis中key的会在uuid钱加前缀
SESSION_TYPE = 'redis'
SESSION_REDIS = Redis(host='127.0.0.1',port=6379)
另外导入
from flask_session impoert Session
在app加载完配置后执行Session(app)