在Django的视图(View)外使用Session的方法


Posted in Python onJuly 23, 2015

从内部来看,每个session都只是一个普通的Django model(在 django.contrib.sessions.models 中定义)。每个session都由一个随机的32字节哈希串来标识,并存储于cookie中。 因为它是一个标准的模型,所以你可以使用Django数据库API来存取session。

>>> from django.contrib.sessions.models import Session
>>> 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发生变化的时候才会存入数据库,比如说,字典赋值或删除。

# Session is modified.
request.session['foo'] = 'bar'

# Session is modified.
del request.session['foo']

# Session is modified.
request.session['foo'] = {}

# Gotcha: Session is NOT modified, because this alters
# request.session['foo'] instead of request.session.
request.session['foo']['bar'] = 'baz'

你可以设置 SESSION_SAVE_EVERY_REQUEST 为 True 来改变这一缺省行为。如果置为True的话,Django会在每次收到请求的时候保存session,即使没发生变化。

注意,会话cookie只会在创建和修改的时候才会送出。 但如果 SESSION_SAVE_EVERY_REQUEST 设置为 True ,会话cookie在每次请求的时候都会送出。 同时,每次会话cookie送出的时候,其 expires 参数都会更新。

Python 相关文章推荐
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
Python下Fabric的简单部署方法
Jul 14 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
Python for循环及基础用法详解
Nov 08 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
python迷宫问题深度优先遍历实例
Jun 20 Python
Python几种酷炫的进度条的方式
Apr 11 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 #Python
详解Python的Django框架中的Cookie相关处理
Jul 22 #Python
在Django中使用Sitemap的方法讲解
Jul 22 #Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 #Python
利用Python的Django框架生成PDF文件的教程
Jul 22 #Python
在Python的Django框架中生成CSV文件的方法
Jul 22 #Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 #Python
You might like
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
基于empty函数的输出详解
2013/06/17 PHP
twig里使用js变量的方法
2016/02/05 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
JS实现li标签的删除
2019/04/12 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
python实现无证书加密解密实例
2014/10/27 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
小学教师自我鉴定
2013/11/07 职场文书
护理毕业生自荐信范文
2013/12/22 职场文书
高二英语教学反思
2014/01/19 职场文书
表彰先进的通报
2014/01/31 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
中介业务员岗位职责
2014/04/09 职场文书
大学生学习计划书
2014/09/15 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL