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)
版权声明:本文标题:Flask操作session 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729334998a1196865.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论