浅析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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
python根据经纬度计算距离示例
Feb 16 Python
Python判断Abundant Number的方法
Jun 15 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
Python selenium抓取微博内容的示例代码
May 17 Python
详解Python3的TFTP文件传输
Jun 26 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
Python字典对象实现原理详解
Jul 01 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
python 画函数曲线示例
Dec 04 Python
Python OpenCV快速入门教程
Apr 17 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
PHP 缓存实现代码及详细注释
2010/05/16 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
对python中的xlsxwriter库简单分析
2018/05/04 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
对python 调用类属性的方法详解
2019/07/02 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
自荐书格式
2013/12/01 职场文书
奠基仪式策划方案
2014/05/15 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
后天观后感
2015/06/08 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
新手初学Java List 接口
2021/07/07 Java/Android
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python