python 使用session_Python(Django之Session详解及使用)
Cookie:
1、保存在用户浏览器中(键值对)。
2、不应该存放敏感信息,如用户账户密码之类的。
Session:
2、保存在服务器的数据库和内存中(也给用户浏览器的Cookie中储存了对应的键值对)
3、给用户Cookie中储存一个随机字符串。
一,基本的操作流程。
1、生成随机字符串
2、写到用户浏览器cookie
3、保存在session中
4、在随机字符串对应的字典中设置相关内容(如果不设置相关内容,就等于没有,也没有起到任何作用),如下:
用户cookie中保存的键值对,也就是服务器给用户的随机字符串
sqlite数据库中保存着用户的随机字符串,加密的用户名(设置什么加密什么),生成时间。
Cookie和Session的区别:
Cookie只保存在客户端的浏览器中,
Session需要依赖于Cookie。
Session保存在服务器的数据库或者内存或者文件,都行。
更多操作:
获取:
request.session['k1'] #没有就会报错
request.session.get('k1',None) #没有也不会报错(建议使用这个)
设置:
request.session['k1'] = user #设置session
request.session.setdefault('k1',user) #如果服务器已经存在,就不在创建。
删除:
del request.session['k1'] #删除某一条
request.session.clear() #清空(注销的时候使用)
request.session.delete("session_key") #删除这个用户的所有信息。
#所有 键、值、键值对(可以通过循环对所有的键值对进行操作,例如:for k,v in request.session.items():),然后拿到数据,用上面讲的方法进行操作。
request.session.keys()
request.session.values()
request.session.items()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems()
#用户session的随机字符串。
request.session.session_key
#将所有Session失效日期小于当前日期的数据删除
request.session.clear_expired(60*60) #例如一小时
#检查用户Session的随机字符串在数据库中是否存在
request.session.exists("session_key")
#删除当前用户的所有Session数据
request.session.delete("session_key")
Session:
默认的超时时间是两周
- 配置文件中设置默认操作(通用配置):(直接放到settings文件的最下面即可)
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,默认修改之后才保存(默认),每次用户操作后起重新计算超时时间,false就表示从用户第一次操作器计算。
Django中默认支持Session,其内部提供了5种类型的Session供开发者使用:
数据库(默认)
缓存
文件
缓存+数据库
加密cookie
1、数据库Session
Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。
a. 配置 settings.py
SESSION_ENGINE= 'django.contrib.sessions.backends.db' #引擎(默认)
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,默认修改之后才保存(默认)
2、缓存Session
a. 配置 settings.py
SESSION_ENGINE= 'django.contrib.sessions.backends.cache' #引擎
SESSION_CACHE_ALIAS = 'default' #使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
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,默认修改之
3、文件Session
a. 配置 settings.py
SESSION_ENGINE= 'django.contrib.sessions.backends.file' #引擎
SESSION_FILE_PATH = None #缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() # 如:/var/folders/d3/j9tj0gz93dg06bmwxmhh6_xm0000gn/T
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,默认修改之后才保存
4、缓存+数据库Session
数据库用于做持久化,缓存用于提高效率
a. 配置 settings.py
SESSION_ENGINE= 'django.contrib.sessions.backends.cached_db' #引擎
5、加密cookie Session
a. 配置 settings.py
SESSION_ENGINE= 'django.contrib.sessions.backends.signed_cookies' #引擎
注意,以上的这几种储存方法虽有不同,但是所有的使用方法都是一样的。
python 使用session_Python(Django之Session详解及使用)相关推荐
- python镜像下载包_python包详解
干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...
- Django REST 框架详解 07 | 三大认证与权限六表
文章目录 一.三大认证 1. 认证组件:校验用户 2. 权限组件:校验用户权限 3. 频率组件:限制视图接口被访问次数 4. 分析源码 二.权限六表 1. RBAC 认证 2. 权限三表 3. 权限五 ...
- python3占位符详解_占位符最新:Python 占位符的使用方法详解_爱安网 LoveAn.com
关于"占位符"的最新内容 聚合阅读 这篇文章主要介绍了Python 占位符的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...
- python波形图librosa_对python中Librosa的mfcc步骤详解
对python中Librosa的mfcc步骤详解 发布时间:2020-10-18 23:55:35 来源:脚本之家 阅读:71 作者:qq_39239990 1.对语音数据归一化 如16000hz的数 ...
- Django入门基础详解
本次使用django版本2.1.2 安装django 安装最新版本 pip install django 安装指定版本 pip install django==1.10.1 查看本机django版本 ...
- 21年最新Python面试题及答案汇总详解(上)
错过三月找工作的机会,还要错过四月的好时期吗?Python面试你做准备了吗?下面小编整理了一套2021年最新Python常见面试题目,及Python面试题目答案汇总.希望能够帮助到大家. 21年最新P ...
- python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解
问题产生描述 使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理. 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess ...
- python平方数迭代器_对python中的高效迭代器函数详解
python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...
- python画图三维-对python mayavi三维绘图的实现详解
网上下载mayavi的官方帮助文档,里面有很多例子,下面的记录都是查看手册后得到的. python的mayavi.mlab库中的绘图函数有很多候选参数,但下文记录并没有过多讨论,本人也是需要用到才查看 ...
最新文章
- C++ KMP算法之next数组的生成
- TypeScript里的类型合并操作符
- Exchange 2013学习(六),脱机通讯簿
- 账户与使用计算机的人无关,本地用户和组
- MOSS/Sharepoint 如何更改一台已经安装了SharePoint的服务器名称
- 页面每次添加都显示最后一次访问记录spring scope=prototype 学习笔记
- python安装robotframework报错_Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
- 如何设置centos7的ip地址配置信息,让我的主机和它互Ping,以及远程登陆
- 超级计算机预报威海雨雪,威海历史天气预报查询_2018年12月份威海天气记录_威海2018年12月份天气情况_天气后报...
- 奇怪,为什么在主页上面只列出最近的随笔,而文章呢?
- Refactoring: Encapsulate Collection
- 产品功能树图_新版PFMEA培训之第三步功能分析,理清结构,梳理思路
- Visual Studio Coded的安装以及中文化
- 杭电计算机学硕还是专硕就业好,19计算机考研选学硕还是专硕?
- 获得浏览器设置的语言
- 封装60秒倒计时vue组件
- 9个offer,12家公司,35场面试,从微软到谷歌
- +initialize方法的调用时机
- idea自定义banner
- Python数据处理课程设计-房屋价格预测-代码
热门文章
- 【避坑指南】通过rtsp url网址获取海康视频流
- python数据比对怎么做_同事给你迷之Excel数据,4个数据处理案例教你Python数据对比更新...
- 我的世界服务器回到死亡位置,我的世界指令大全回到死亡地点 | 手游网游页游攻略大全...
- CSS 文本效果 text-overflow,word-wrap,word-break,writing-mode,text-align-last,text-justify
- js json遍历到html,js遍历json的key和value的实例_稚终_前端开发者
- Android VectorDrawable 矢量图+属性动画 使用总结
- 【字符串算法】刷题总结
- XC6217,LED驱动IC,DC-DC升压IC,LDO稳压IC,电压检测IC,复位IC, MOS管
- D. Game on Axis codeforces1787D
- 知客CRM,户外广告公司最适用的广告管理软件