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 元类使用说明
Dec 18 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
Python三级目录展示的实现方法
Sep 28 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
python flask中静态文件的管理方法
Mar 20 Python
Python实现FM算法解析
Jun 18 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
基于Python实现对比Exce的工具
Apr 07 Python
python中mongodb包操作数据库
Apr 19 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
投标人廉洁自律承诺书
2014/05/26 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
欠款证明
2015/06/24 职场文书
茶花女读书笔记
2015/06/29 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs