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之玩转字符串(1)
Sep 14 Python
跟老齐学Python之重回函数
Oct 10 Python
详解Python中for循环的使用方法
May 14 Python
python rsa 加密解密
Mar 20 Python
Python实现矩阵转置的方法分析
Nov 24 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
python基于openpyxl生成excel文件
Dec 23 Python
Python机器学习之KNN近邻算法
May 14 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
用matplotlib画等高线图详解
2017/12/14 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
Python enumerate内置库用法解析
2020/02/24 Python
什么是Python中的匿名函数
2020/06/02 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
你常见到的runtime exception
2016/09/05 面试题
会计师职业生涯规划范文
2014/02/18 职场文书
小学清明节活动方案
2014/03/08 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
如何正确理解python装饰器
2021/06/15 Python
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python