在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利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python实现发送QQ邮件的封装
Jul 14 Python
python requests 测试代理ip是否生效
Jul 25 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
python and or用法详解
Jun 26 Python
python pptx复制指定页的ppt教程
Feb 14 Python
什么是python类属性
Jun 10 Python
Python 中如何写注释
Aug 28 Python
基于python实现图片转字符画代码实例
Sep 04 Python
详解python3类型注释annotations实用案例
Jan 20 Python
详解Python内置模块Collections
Mar 22 Python
Python内置的数据类型及使用方法
Apr 13 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创建Cookie数组的详解
2013/07/03 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
php base64 编码与解码实例代码
2017/03/21 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
python通过post提交数据的方法
2015/05/06 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
python实现拓扑排序的基本教程
2018/03/11 Python
详解django自定义中间件处理
2018/11/21 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
python按比例随机切分数据的实现
2019/07/11 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
人事部主管岗位职责
2013/12/26 职场文书
树转促学习心得体会
2014/09/10 职场文书
小学生通知书评语
2014/12/31 职场文书
承诺保证书格式
2015/02/28 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
导游词之张家界
2019/10/31 职场文书
Python&Matlab实现樱花的绘制
2022/04/07 Python