浅析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实现的金山快盘的签到程序
Jan 17 Python
Python简单的制作图片验证码实例
May 31 Python
python构建自定义回调函数详解
Jun 20 Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Python对象与引用的介绍
Jan 24 Python
python绘制漏斗图步骤详解
Mar 04 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
详解python程序中的多任务
Sep 16 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 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
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
js change,propertychange,input事件小议
2011/12/20 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
js select option对象小结
2013/12/20 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
详解Python中的日志模块logging
2015/06/19 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
Python shutil模块用法实例分析
2019/10/02 Python
numpy.array 操作使用简单总结
2019/11/08 Python
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
班组长的岗位职责
2013/12/09 职场文书
餐饮加盟计划书
2014/01/10 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
市场营销调查计划书
2014/05/02 职场文书
导师推荐信范文
2014/05/09 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
go语言-在mac下brew升级golang
2021/04/25 Golang
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js