在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
  • asp之家 网络编程 m.aspxhome.com