在Django的视图(View)外使用Session的方法
作者:goldensun 时间:2023-06-24 02:28:32
从内部来看,每个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 参数都会更新。
标签:Django,Session
0
投稿
猜你喜欢
js中var、let、const之间的区别
2024-04-23 09:11:29
Golang template 包基本原理分析
2024-04-25 15:18:32
python opencv 读取本地视频文件 修改ffmpeg的方法
2023-10-13 09:10:38
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2022-03-06 05:52:27
pytorch加载自己的图片数据集的2种方法详解
2023-08-09 00:35:48
JS实现不规则TAB选项卡效果代码
2024-06-20 03:54:32
MySQL使用binlog日志做数据恢复的实现
2024-01-27 09:17:47
256种编程语言大汇总
2023-05-30 19:06:01
python3+openCV 获取图片中文本区域的最小外接矩形实例
2022-03-16 00:57:11
elementui的el-popover修改样式不生效的解决
2024-05-09 15:22:24
使用SQL Server 2008管理非结构化数据
2009-01-08 15:28:00
基于Python的EasyGUI学习实践
2021-09-05 10:54:55
你应当了解的5个CSS3新技术
2009-02-11 13:01:00
Python实现自动化发送邮件
2023-12-07 14:39:58
如何让IIS支持wap,让ASP生成wml
2008-05-18 13:42:00
查找sqlserver查询死锁源头的方法 sqlserver死锁监控
2024-01-23 01:10:46
python实现批量转换文件编码(批转换编码示例)
2023-07-28 22:03:47
对Python subprocess.Popen子进程管道阻塞详解
2022-10-30 07:59:49
Python中正则表达式的用法总结
2021-04-23 17:04:49
Python日期的加减等操作的示例
2021-10-06 14:28:14