目录
什么是Session
Session也被称为会话,当用户在应用程序的Web页面之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。Session是存储在服务端上的。
存储Session
获取客户端的GET请求,将键值对存储在Session中。
下面的代码存储客户端GET请求name键值对。
import datetime
import webbrowser
from flask import Flask, session, make_response, request
app = Flask(__name__)
# 存储session
@ app.route("/write")
def write():
# 可以设置session有效期
session.permanent = True
session["name"] = request.args.get("name")
response = make_response("<h1>name has been write in session.</h1>")
return response
# 设置session加密key
app.secret_key = "qwerasdf"
# 设置session有效时间
app.permanent_session_lifetime = datetime.timedelta(seconds=300)
if __name__ == "__main__":
webbrowser.open("http://127.0.0.1:5000")
app.run()
⚠️注意:write函数中的获取客户端GET请求 resquest.args.get()方法描述请点击链接:Flask 获取客户端GET请求_TCatTime的博客-优快云博客_flask get
使用make_response()创建response描述请点击链接:
运行代码,在浏览器中输入 http://127.0.0.1:5000/write?name=cat,结果如下:
获取Session
存储Session后,将存储的Session读取出。
下面的代码仍以上面的例子,读取实现存储在Session中的name。
"""
征服Flask
1.6 会话Session
https://edu.youkuaiyun.com/course/play/6506/126110
"""
import datetime
import webbrowser
from flask import Flask, session, make_response, request
app = Flask(__name__)
# 获取session
@ app.route("/read")
def get_session():
if "name" in session:
response = make_response("<h1>name %s has been exist in session.</h1>"
% session["name"])
else:
response = make_response("<h1>no name in session.</h1>")
return response
# 存储session
@ app.route("/write")
def write():
# 可以设置session有效期
session.permanent = True
session["name"] = request.args.get("name")
response = make_response("<h1>name has been write in session.</h1>")
return response
# 设置session加密key
app.secret_key = "qwerasdf"
# 设置session有效时间
app.permanent_session_lifetime = datetime.timedelta(seconds=300)
if __name__ == "__main__":
webbrowser.open("http://127.0.0.1:5000")
app.run()
运行代码,在浏览器中输入 http://127.0.0.1:5000/write?name=cat 后存储Session。
然后输入 http://127.0.0.1:5000/read 代码显示如下:
删除Session
在经过上面的添加读取Session过程后,Session已经存储在服务端上。如果要将Session删除,我们还是以存储过的"name"键为例,可以使用下面的代码:
import datetime
import webbrowser
from flask import Flask, session, make_response, request
app = Flask(__name__)
# 获取session
@ app.route("/read")
def get_session():
if "name" in session:
response = make_response("<h1>name %s has been exist in session.</h1>"
% session["name"])
else:
response = make_response("<h1>no name in session.</h1>")
return response
# 存储session
@ app.route("/write")
def write():
# 可以设置session有效期
session.permanent = True
session["name"] = request.args.get("name")
response = make_response("<h1>name has been write in session.</h1>")
return response
# 删除session
@ app.route("/delete")
def delete():
name = session.pop("name", None)
response = make_response("<h1>Delete name %s in session success.</h1>" % name)
return response
# 设置session加密key
app.secret_key = "qwerasdf"
# 设置session有效时间
app.permanent_session_lifetime = datetime.timedelta(seconds=300)
if __name__ == "__main__":
webbrowser.open("http://127.0.0.1:5000")
app.run()
运行代码,存储Session http://127.0.0.1:5000/write?name=fsp
然后输入: http://127.0.0.1:5000/delete
页面显示如下:
然后回到 http://127.0.0.1:5000/read 看到页面显示没有name键存入Session中。
Session删除成功。
⚠️注意事项:如果在删除Session中浏览器页面显示:Delete name None in session success. 请先清理浏览器缓存后重新执行代码。