flask操作session的方法

flask操作session:

  1. 设置session:通过flask.session就可以操作session了。操作session就跟操作字典是一样的。session['username']='zhiliao'
  2. 获取session:也是类似字典,session.get(key)

删除session

  1. 删除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)

赞(2) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » flask操作session的方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏