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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python getopt模块处理命令行选项实例
May 13 Python
python实现简单中文词频统计示例
Nov 08 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
详解python tkinter模块安装过程
Jan 06 Python
Keras搭建自编码器操作
Jul 03 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 Python
Pycharm调试程序技巧小结
Aug 08 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 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单例模式实现(对象只被创建一次)
2012/12/05 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP自定义多进制的方法
2016/11/03 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
通过js获取div的background-image属性
2013/10/15 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
自荐书模板
2013/12/19 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
高中校园广播稿
2014/01/11 职场文书
幼儿评语大全
2014/04/30 职场文书
企业负责人任命书
2014/06/05 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers