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 相关文章推荐
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
python的mysqldb安装步骤详解
Aug 14 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
如何利用python正则表达式匹配版本信息
Dec 09 Python
Python 多进程原理及实现
Dec 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中几种常见安全设置详解
2010/04/06 PHP
PHP对象Object的概念 介绍
2012/06/14 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
微信小程序获取当前位置和城市名
2019/11/13 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Python中内建函数的简单用法说明
2016/05/05 Python
基于python时间处理方法(详解)
2017/08/14 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
基于Django统计博客文章阅读量
2019/10/29 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
几道PHP面试题
2013/04/14 面试题
大学生最新职业生涯规划书范文
2014/01/12 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
《故乡》教学反思
2014/04/10 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
松材线虫病防治方案
2014/06/15 职场文书
购房协议书范本
2014/10/02 职场文书
培训通知书模板
2015/04/17 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
使用javascript解析二维码的三种方式
2021/11/11 Javascript