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 提取文件的小程序
Jul 29 Python
python实现博客文章爬虫示例
Feb 26 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
进一步探究Python中的正则表达式
Apr 28 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python文件操作基本流程代码实例
Dec 11 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
python 提取文件指定列的方法示例
Aug 07 Python
Python3实现打印任意宽度的菱形代码
Apr 12 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
解析argc argv在php中的应用
2013/06/24 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
js数组去重的hash方法
2016/12/22 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
Angular 如何使用第三方库的方法
2018/04/18 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
python flask 多对多表查询功能
2017/06/25 Python
Python Series从0开始索引的方法
2018/11/06 Python
python实现转圈打印矩阵
2019/03/02 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python文件选择对话框的操作方法
2019/06/27 Python
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
优秀团队获奖感言
2014/02/19 职场文书
三爱活动实施方案
2014/03/19 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
作风整顿剖析材料
2014/09/30 职场文书
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript