admin管理员组

文章数量:1642330

直接上代码

from flask import Flask,session
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24) # 必须要设置否则报错,RuntimeError:会话不可用,因为没有设置密钥。将应用程序上的secret_key设置为唯一且保密的内容。
# 添加数据到session中
# 操作session的时候 跟操作字典是一样的。
# SECRET_KEY

@app.route('/')
def hello_world():
    session['username'] = 'zhangsan' # 或者flask.session['username'] = 'zhangsan'这样写也可以,就是需要倒入一下flask
    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True)

在python中操作session的方式和操作字典的方式非常类似,session['username'] = 'zhangsan'就是给session中的变量username赋值。在flask中操作session有一点需要注意,就是需要设置一个'SECRET_KEY'。可以单独在配置文件中写SECRET_KEY。

SECRET_KEY='abc'

或者直接写

app.config['SECRET_KEY']='abc'

都是可以的,我这里用了一个随机的变量,而且是24位的。 os.urandom(24)会从 0-9,a-z A-Z中随机选中24个字符串用做加密session的秘钥。或者称之为 “盐”。设置好之后执行下代码,然后在谷歌浏览器中找找这个session。在谷歌浏览器中找到设置,然后在最下面找到高级

找到内容设置。找到Cookie

然后找到查看所有Cookie和网站数据 搜索127.0.0.1

到这个里就可以看到咱们添加的session值了,但是这个内容是加密后的。

 

2.获取session值

@app.route('/get/')
def get():
    # session['username']   如果username不存在则会抛出异常
    # session.get('username')   如果username不存在会得到 none 不会报错 推荐使用
    return session.get('username')

这里咱们获取值一般是用session.get('username')这样即使session值不存在也不会抛出异常。

3.删除清空session

@app.route('/delete/')
def delete():
    print(session.get('username'))
    session.pop('username')
    print(session.get('username'))
    return 'success'

@app.route('/clear/')
def clear():
    print(session.get('username'))
    # 删除session中的所有数据
    session.clear()
    print(session.get('username'))
    return 'success'

4.设置session的过期时间

一般session都是有一个过期时间的,

如果没有指定session的过期时间,那么默认是浏览器关闭就自动结束,
如果设置了session的permanent属性为True,那么过期时间是31天。

那么如何设置session的过期时间呢?

 from datetime import timedelta
 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
 session.permanent = True

当我只设置了session.permanent = True时,可以看到浏览器中127.0.0.1中的session过期时间为31天。

当我继续设置 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)时,可以看到session的过期时间变成7天了。

好了,完整代码如下。

from flask import Flask,session
import os
from datetime import timedelta
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
# 添加数据到session中
# 操作session的时候 跟操作字典是一样的。
# SECRET_KEY

@app.route('/')
def hello_world():
    session['username'] = 'zhangsan'
    # 如果没有指定session的过期时间,那么默认是浏览器关闭就自动结束
    # 如果设置了session的permanent属性为True,那么过期时间是31天。
    session.permanent = True
    return 'Hello World!'

@app.route('/get/')
def get():
    # session['username']   如果username不存在则会抛出异常
    # session.get('username')   如果username不存在会得到 none 不会报错 推荐使用
    return session.get('username')

@app.route('/delete/')
def delete():
    print(session.get('username'))
    session.pop('username')
    print(session.get('username'))
    return 'success'

@app.route('/clear/')
def clear():
    print(session.get('username'))
    # 删除session中的所有数据
    session.clear()
    print(session.get('username'))
    return 'success'

if __name__ == '__main__':
    app.run(debug=True)

 

 

 

 

 

本文标签: 操作flasksession