浅析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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Django 实现下载文件功能的示例
Mar 06 Python
Python函数和模块的使用总结
May 20 Python
基于Python函数和变量名解析
Jul 19 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
Python的互斥锁与信号量详解
Sep 12 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
python的等深分箱实例
Nov 22 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
Python基础之Socket通信原理
Apr 22 Python
七个Python必备的GUI库
Apr 27 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
新52大事件
2020/03/03 欧美动漫
一些php技巧与注意事项分析
2011/02/03 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
php两种无限分类方法实例
2015/04/21 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
html5新特性与用法大全
2018/09/13 HTML / CSS
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
Linux常见面试题
2016/10/04 面试题
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
实习生体会的自我评价范文
2013/11/28 职场文书
校园达人秀策划书
2014/01/12 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
搞笑爱情保证书
2014/04/29 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
最新最全的手机号验证正则表达式
2022/02/24 Javascript
详解Python中*args和**kwargs的使用
2022/04/07 Python