Django操作session 的方法


Posted in Python onMarch 09, 2020

session是存放在服务端的,在django中使用session必须要先在数据库中创建django_session表,session相关信息都要依赖此表

获取session

request.session['status']

request.session.get('status')#一般用get,无此键返回None不报错

设置session

#在使用session之前必须在数据库创建相关的表(django_session)

#调用request.session首先会接收请求头部的cookie是否有sessionid,进行表查询对比

#如果有重新生成一个sessionid进行覆盖更新记录,并将随机生成的sessionid添加到cookie返回前端

# 没有则新建存进表中的session_key,同时将字典信息加密自动存进表中的session_data字段

request.session['status']=True  # 存在自动覆盖

request.session.setdefault('k1',123) # 存在则不设置

删除session

request.session.flush()#删除服务端的session,删除当前的会话数据并删除会话的Cookie。

request.session.clear_expired()# 将所有Session失效日期小于当前日期的数据删除,将过期的删除

del request.session['k1']#django-session表里面同步删除

request.session.delete()# 删除当前会话的所有Session数据

更多session操作

# 所有 键、值、键值对

request.session.keys()

request.session.values()

request.session.items()

#获取sessionid的值

session_key = request.session.session_key 

#检查会话session的key在数据库中是否存在

request.session.exists("session_key") #session_key就是那个sessionid的值

# 设置会话Session和Cookie的超时时间

request.session.set_expiry(value)

    * 如果value是个整数,session会在些秒数后失效。

    * 如果value是个datatime或timedelta,session就会在这个时间后失效。

    * 如果value是0,用户关闭浏览器session就会失效。

    * 如果value是None,session会依赖全局session失效策略。

Session详细流程解析

Django操作session 的方法

Django中的Session配置

Django中默认支持Session,其内部提供了5种类型的Session供开发者使用。

1. 数据库Session

SESSION_ENGINE = 'django.contrib.sessions.backends.db'  # 引擎(默认)

2. 缓存Session

SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎

SESSION_CACHE_ALIAS = 'default'              # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置

3. 文件Session

SESSION_ENGINE = 'django.contrib.sessions.backends.file'  # 引擎
SESSION_FILE_PATH = None                  # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir()

4. 缓存+数据库

SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'    # 引擎

5. 加密Cookie Session

SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'  # 引擎

其他公用设置项:

SESSION_COOKIE_NAME = "sessionid"            # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)

SESSION_COOKIE_PATH = "/"                # Session的cookie保存的路径(默认)

SESSION_COOKIE_DOMAIN = None               # Session的cookie保存的域名(默认)

SESSION_COOKIE_SECURE = False              # 是否Https传输cookie(默认)

SESSION_COOKIE_HTTPONLY = True              # 是否Session的cookie只支持http传输(默认)

SESSION_COOKIE_AGE = 1209600               # Session的cookie失效日期(2周)(默认)

SESSION_EXPIRE_AT_BROWSER_CLOSE = False         # 是否关闭浏览器使得Session过期(默认)

SESSION_SAVE_EVERY_REQUEST = False            # 是否每次请求都保存Session,默认修改之后才保存(默认)

总结

到此这篇关于Django操作session 的方法的文章就介绍到这了,更多相关django操作session 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 判断一个进程是否存在
Apr 09 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
Python httplib模块使用实例
Apr 11 Python
Python脚本实现自动发带图的微博
Apr 27 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
详解Flask开发技巧之异常处理
Jun 15 Python
Python集合的基础操作
Nov 01 Python
Python装饰器用法与知识点小结
Mar 09 #Python
Django中的session用法详解
Mar 09 #Python
python实现引用其他路径包里面的模块
Mar 09 #Python
python+opencv边缘提取与各函数参数解析
Mar 09 #Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 #Python
Pycharm+Python工程,引用子模块的实现
Mar 09 #Python
python的sys.path模块路径添加方式
Mar 09 #Python
You might like
php 数组的一个悲剧?
2011/05/11 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
python实现ip查询示例
2014/03/26 Python
Python函数中定义参数的四种方式
2014/11/30 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
django主动抛出403异常的方法详解
2019/01/04 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
python实现简单坦克大战
2020/03/27 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
高二美术教学反思
2014/01/14 职场文书
教育技术职业规划范文
2014/03/04 职场文书
银行给客户的感谢信
2015/01/23 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang