浅析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编程之Re模块下的函数介绍
Oct 28 Python
Python语言实现百度语音识别API的使用实例
Dec 13 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
Django用户认证系统 User对象解析
Aug 02 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
Python中的With语句的使用及原理
Jul 29 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
Python3获取cookie常用三种方案
Oct 05 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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
什么是短波收听SWL
2021/03/01 无线电
PHP导入Excel到MySQL的方法
2011/04/23 PHP
基于initPHP的框架介绍
2013/04/18 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
javascript preload&lazy load
2010/05/13 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
javascript常用方法总结
2015/05/14 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
Python中super的用法实例
2015/05/28 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
python实现桌面气泡提示功能
2019/07/29 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
小学师德师风演讲稿
2014/09/02 职场文书
技术员岗位职责范本
2015/04/11 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle