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中的默认参数详解
Jun 24 Python
Python数据结构之单链表详解
Sep 12 Python
Python使用Django实现博客系统完整版
Sep 29 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
Python subprocess模块常见用法分析
Jun 12 Python
python实现图片批量压缩程序
Jul 23 Python
详解Python发送email的三种方式
Oct 18 Python
python实现爬山算法的思路详解
Apr 09 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
django 数据库返回queryset实现封装为字典
May 19 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
Python基础之操作MySQL数据库
May 06 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 flock 文件锁详细介绍
2012/12/29 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
优秀毕业生自荐信范文
2014/01/01 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
第一书记观后感
2015/06/08 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书