在Django的视图(View)外使用Session的方法
从内部来看,每个session都只是一个普通的Djangomodel(在django.contrib.sessions.models中定义)。每个session都由一个随机的32字节哈希串来标识,并存储于cookie中。因为它是一个标准的模型,所以你可以使用Django数据库API来存取session。
>>>fromdjango.contrib.sessions.modelsimportSession >>>s=Session.objects.get(pk='2b1189a188b44ad18c35e113ac6ceead') >>>s.expire_date datetime.datetime(2005,8,20,13,35,12)
你需要使用get_decoded()来读取实际的session数据。这是必需的,因为字典存储为一种特定的编码格式。
>>>s.session_data
'KGRwMQpTJ19hdXRoX3VzZXJfaWQnCnAyCkkxCnMuMTExY2ZjODI2Yj...'
>>>s.get_decoded()
{'user_id':42}
何时保存Session
缺省的情况下,Django只会在session发生变化的时候才会存入数据库,比如说,字典赋值或删除。
#Sessionismodified.
request.session['foo']='bar'
#Sessionismodified.
delrequest.session['foo']
#Sessionismodified.
request.session['foo']={}
#Gotcha:SessionisNOTmodified,becausethisalters
#request.session['foo']insteadofrequest.session.
request.session['foo']['bar']='baz'
你可以设置SESSION_SAVE_EVERY_REQUEST为True来改变这一缺省行为。如果置为True的话,Django会在每次收到请求的时候保存session,即使没发生变化。
注意,会话cookie只会在创建和修改的时候才会送出。但如果SESSION_SAVE_EVERY_REQUEST设置为True,会话cookie在每次请求的时候都会送出。同时,每次会话cookie送出的时候,其expires参数都会更新。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下