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中的算数运算符的用法
May 13 Python
Python入门之modf()方法的使用
May 15 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
python统计多维数组的行数和列数实例
Jun 23 Python
在python中pandas的series合并方法
Nov 12 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Python实现网站表单提交和模板
Jan 15 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
Python接口测试get请求过程详解
Feb 28 Python
python 实现全球IP归属地查询工具
Dec 18 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
ThinkPHP安装和设置
2015/07/27 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
python 合并文件的具体实例
2013/08/08 Python
python用字典统计单词或汉字词个数示例
2014/04/22 Python
彻底理解Python list切片原理
2017/10/27 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
python爬取网易云音乐评论
2018/11/16 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
财务整改报告范文
2014/11/05 职场文书
党校学习党性分析材料
2014/12/19 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL