浅析Django中关于session的使用


Posted in Python onDecember 30, 2019

一、Session的概念

cookie是在浏览器端保存键值对数据,而session是在服务器端保存键值对数据
session 的使用依赖 cookie:在使用Session后,会在Cookie中存储一个sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid后,会根据这个值找出这个请求者的Session。

二、Django中session的使用

session键值对数据保存

浅析Django中关于session的使用

session数据默认保存在django项目的一张数据库表中(表名为:django_session),保存格式如下:

浅析Django中关于session的使用

 三、数据操作:

以键值对的格式写session

request.session['键']=值

根据键读取值

request.session.get('键',默认值)
# 或者
request.session['键']

清除所有session,在存储中删除值的部分 

request.session.clear()

清除session数据,在存储中删除session的整条数据

request.session.flush()

删除session中的指定键及值,在存储中只删除某个键及对应的值

del request.session['键']

设置session数据有效时间; 如果不设置,默认过期时间为两周

request.session.set_expiry(value)

  • 如果value是一个整数,则 session数据 将在value秒没有活动后过期。
  • 如果value为None,那么会话永不过期。
  • 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。

四、以下是使用例子:

# 发短信接口
def sms_send(request):
 # http://localhost:8000/duanxin/duanxin/sms_send/?phone=18434288349
 # 1 获取手机号
 phone = request.GET.get('phone')
 # 2 生成6位验证码
 code = aliyunsms.get_code(6, False)
 # 3 缓存到Redis
 #cache.set(phone,code,60) #60s有效期
 #print('判断缓存中是否有:',cache.has_key(phone))
 #print('获取Redis验证码:',cache.get(phone))
 #暂时用session处理
 request.session['phone'] = code
 request.session.set_expiry(300) #设置5分钟后过期
 print('判断缓存中是否有:', request.session.get('phone'))
 print('获取session验证码:',request.session.get('phone'))
 # 4 发短信
 result = aliyunsms.send_sms(phone, code)
 return HttpResponse(result)
# 短信验证码校验
def sms_check(request):
 # /duanxin/sms_check/?phone=xxx&code=xxx
 # 1. 电话和手动输入的验证码
 phone = request.GET.get('phone')
 code = request.GET.get('code')
 # 2. 获取redis中保存的code
 #print('缓存中是否包含:',cache.has_key(phone))
 #print('取值:',cache.get(phone))
 #cache_code = cache.get(phone)
 #获取session里的code
 print('取值:', request.session.get('phone'))
 cache_code = request.session.get('phone')
 # 3. 判断
 if code == cache_code:
 return HttpResponse(json.dumps({'result':'OK'}))
 else:
 return HttpResponse(json.dumps({'result':'False'}))

总结

以上所述是小编给大家介绍的Django下关于session的使用,希望对大家有所帮助!

Python 相关文章推荐
python 输出一个两行字符的变量
Feb 05 Python
python 多线程应用介绍
Dec 19 Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Python中join函数简单代码示例
Jan 09 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
python实现超市商品销售管理系统
Oct 25 Python
python单例设计模式实现解析
Jan 07 Python
Python中itertools的用法详解
Feb 07 Python
Python如何在DataFrame增加数值
Feb 14 Python
python statsmodel的使用
Dec 21 Python
利用Python实时获取steam特惠游戏数据
Jun 25 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 #Python
在Python中利用pickle保存变量的实例
Dec 30 #Python
python Popen 获取输出,等待运行完成示例
Dec 30 #Python
Python3常见函数range()用法详解
Dec 30 #Python
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 #Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 #Python
用python爬取历史天气数据的方法示例
Dec 30 #Python
You might like
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
python实现文本文件合并
2015/12/29 Python
python实现京东秒杀功能
2018/07/30 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
介绍一下grep命令的使用
2012/06/28 面试题
报到证丢失证明
2014/01/11 职场文书
房屋转让协议书
2014/04/11 职场文书
协议书格式
2014/04/23 职场文书
村长反四风问题个人对照检查材料
2014/09/21 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2015年资料员工作总结
2015/04/25 职场文书
简爱读书笔记
2015/06/26 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
MySql分区类型及创建分区的方法
2022/04/13 MySQL