1、session的本质
session是一个SecureCookieSession类(继承自CallbackDict、SessionMixin)的实例化对象,可以将其当做一个字典,用于存储用户的登录信息。flask的session与django的session不同之处在于,在服务器端将登录信息保存在session里面,当返回响应的时候,flask将session序列化成了字符串,然后设置响应头的Set-Cookie,用于将序列化后的信息保存在客户端(默认的键为session,可以自己设定)。当用户再次登录时,就会携带键名为session的Cookie信息,flask就会在对其就行解析,将其写入到session中,如果没有,则创建一个空的session。
2、session的创建流程
由上图可知,session(SecureCookieSession)和request(Request)被封装在ctx(RequestContext)中,我们经常使用的session和request
1 from flask import request, session
就是ctx.request和ctx.session。
由于session是一个继承自字典的类的对象,所以在往session里面写入数据可删除数据时,可以使用字典的方式
# 写入数据 session["k1"] = "v1" # 删除数据 del session["k1"]