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使用urllib2模块获取gravatar头像实例
Dec 18 Python
python之yield表达式学习
Sep 02 Python
Python去除字符串两端空格的方法
May 21 Python
Python如何实现文本转语音
Aug 08 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
python算法题 链表反转详解
Jul 02 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 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 foreach、while性能比较
2009/10/15 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
JavaScript的目的分析
2007/01/05 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
初识Javascript小结
2015/07/16 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现注册登录系统
2017/08/08 Python
python中sys.argv函数精简概括
2018/07/08 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
python验证码图片处理(二值化)
2019/11/01 Python
django实现类似触发器的功能
2019/11/15 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
高中生学习总结的自我评价范文
2013/10/13 职场文书
初中校园之声广播稿
2014/01/15 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
员工工作表现评语
2014/04/26 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
2014年实习生工作总结
2014/11/27 职场文书
2014年工商所工作总结
2014/12/09 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
聘任合同书
2015/09/21 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis