浅析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中的上下文管理器
Jun 28 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
Python日期的加减等操作的示例
Aug 15 Python
Python编程scoketServer实现多线程同步实例代码
Jan 29 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
Django框架models使用group by详解
Mar 11 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 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之第四天
2006/10/09 PHP
php 无限极分类
2008/03/27 PHP
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
Python中的localtime()方法使用详解
2015/05/22 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
pytorch 预训练层的使用方法
2019/08/20 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
应届生保险求职信
2013/11/11 职场文书
学生宿舍管理制度
2014/01/30 职场文书
离婚协议书格式
2015/01/26 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python