在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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
python executemany的使用及注意事项
Mar 13 Python
Python常见字典内建函数用法示例
May 14 Python
Python中判断输入是否为数字的实现代码
May 26 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python3.5字符串常用操作实例详解
May 01 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
Oct 14 Python
TFRecord文件查看包含的所有Features代码
Feb 17 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
Python Celery异步任务队列使用方法解析
Aug 10 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
php基础知识:类与对象(5) static
2006/12/13 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
PHP教程 变量定义
2009/10/23 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
php 中的closure用法详解
2017/06/12 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
Python中input和raw_input的一点区别
2014/10/21 Python
python如何在循环引用中管理内存
2018/03/20 Python
numpy基础教程之np.linalg
2019/02/12 Python
详解python:time模块用法
2019/03/25 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
初中作文评语大全
2014/04/23 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
用Python提取PDF表格的方法
2021/04/11 Python