Flask Session

本文介绍了Flask中的Session概念,包括其作为会话存储的特性。详细讲述了如何存储、获取和删除Session,并通过示例代码展示了具体的操作过程。用户在不同页面跳转时,Session数据能保持持久化。此外,还提到了操作Session时的一些注意事项,如删除Session后需清理浏览器缓存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

什么是Session

存储Session

获取Session

删除Session


什么是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描述请点击链接:

创建Flask Response_TCatTime的博客-优快云博客

运行代码,在浏览器中输入  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. 请先清理浏览器缓存后重新执行代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值