在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 相关文章推荐
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
python使用代理ip访问网站的实例
May 07 Python
django DRF图片路径问题的解决方法
Sep 10 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
Python3数字求和的实例
Feb 19 Python
pycharm创建一个python包方法图解
Apr 10 Python
python处理excel绘制雷达图
Oct 18 Python
Python更新所有已安装包的操作
Feb 13 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
在Keras中实现保存和加载权重及模型结构
Jun 15 Python
python中怎么表示空值
Jun 19 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
php代码把全角数字转为半角数字
2007/12/10 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
python中对list去重的多种方法
2014/09/18 Python
深入解析Python中的线程同步方法
2016/06/14 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
python Celery定时任务的示例
2018/03/13 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python实现ip代理池功能示例
2019/07/05 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
教师业务培训方案
2014/05/01 职场文书
环保标语大全
2014/06/12 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书