在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中的对象,方法,类,实例,函数用法分析
Jan 15 Python
python如何实现远程控制电脑(结合微信)
Dec 21 Python
Python循环语句中else的用法总结
Sep 11 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
python使用opencv读取图片的实例
Aug 17 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
mac PyCharm添加Python解释器及添加package路径的方法
Oct 29 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
Django自定义用户登录认证示例代码
Jun 30 Python
如何基于python实现年会抽奖工具
Oct 20 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
用PHP实现维护文件代码
2007/06/14 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
php实现的CSS更新类实例
2014/09/22 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
Javascript实现单张图片浏览
2014/12/18 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
python中的print()输出
2019/04/12 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
Jar包的作用是什么
2014/03/30 面试题
学校安全教育制度
2014/01/31 职场文书
水电工岗位职责
2014/02/12 职场文书
党员剖析材料范文
2014/09/30 职场文书
优秀教师个人材料
2014/12/15 职场文书