浅析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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
Python3 合并二叉树的实现
Sep 30 Python
python有序查找算法 二分法实例解析
Feb 18 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
python GUI计算器的实现
Oct 09 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
Python预测分词的实现
Jun 18 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
mysq GBKl乱码
2006/11/28 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
彪马美国官网:PUMA美国
2017/03/09 全球购物
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
保安岗位职责
2014/02/21 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
经理岗位职责
2015/02/02 职场文书
工作证明书
2015/06/15 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
element tree树形组件回显数据问题解决
2022/08/14 Javascript