常见Session操作
通过
HttpRequest
对象的Session属性
进行会话的读写操作,以键值对的格式操作Session设置Session
request.session['键'] = 值
读取Session
request.session.get('键',默认值)
删除指定键的值,在存储中只删除某个键对应的值
del request.session['键']
清除所有键的值,在存储中删除所有键对应的值
request.session.clear()
清除Session数据,在存储中删除所有键及对应的值,形成空表
request.session.flush()
设置会话的超时时间
request.session.set_expiry(value)
- 如果value是一个整数,会话将在value秒没有活动后过期
- 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期
- 如果value为None,那么会话则两个星期后过期
Session代码演练
配置URLconf
url(r'^session/$', views.session),
视图:对于读取和删除操作可以查看表数据来验证
def session(request): # 写Session request.session['c1'] = 'login' # 读Session c = request.session.get('c1') print c # 删除指定键的值 # del request.session['c1'] # 删除所有键的值 # request.session.clear() # 删除所有的Session记录 # request.session.flush() return HttpResponse('测试Session')
写入Session后
Session依赖于Cookie
思考:所有请求者的Session都会存储在服务器中,服务器如何区分请求者和Session数据的对应关系呢?
答案:在使用Session后,会在Cookie中存储一个
sessionid
的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid
后,会根据这个值找出这个请求者的Session
提示:
1. 如果想使用Session,浏览器必须支持Cookie,否则就无法使用Session了 2. 存储Session时,键与Cookie中的`sessionid`相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置
- base64编码解码
对hello进行base64编码
echo "hello" | base64
结果
aGVsbG8K
对aGVsbG8K进行base64解码
echo "aGVsbG8K" | base64 -d
结果
hello