浅析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 相关文章推荐
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
numpy 计算两个数组重复程度的方法
Nov 07 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
python列表使用实现名字管理系统
Jan 30 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
你可能不知道的Python 技巧小结
Jan 29 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
openCV提取图像中的矩形区域
Jul 21 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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
提问的智慧(2)
2006/10/09 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
基于vue组件实现猜数字游戏
2020/05/28 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
Python模拟随机游走图形效果示例
2018/02/06 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
python 如何调用远程接口
2020/09/11 Python
Python实现像awk一样分割字符串
2020/09/15 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
大一期末自我鉴定
2013/12/13 职场文书
卫生安全检查制度
2014/02/04 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
安全生产承诺书范文
2014/05/22 职场文书
校园广播稿精选
2014/10/01 职场文书
2014年检验科工作总结
2014/11/22 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
Android自定义双向滑动控件
2022/04/19 Java/Android