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实现2014火车票查询代码分享
Jan 10 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
使用Eclipse如何开发python脚本
Apr 11 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
python根据url地址下载小文件的实例
Dec 18 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
Python如何使用OS模块调用cmd
Feb 27 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 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
Nginx下配置codeigniter框架方法
2015/04/07 PHP
关于PHP开发的9条建议
2015/07/27 PHP
yii2安装详细流程
2018/05/23 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
python编写简单爬虫资料汇总
2016/03/22 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python实现微信表情包炸群功能
2021/01/28 Python
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
小学英语教学反思
2014/01/30 职场文书
酒店总经理助理职责
2014/02/12 职场文书
《穷人》教学反思
2014/04/08 职场文书
事业单位聘任报告
2015/03/02 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
python中的3种定义类方法
2021/11/27 Python
Python find()、rfind()方法及作用
2022/12/24 Python