flask session_Flask干货:Flask数据交换——Session的使用

a2828fac7d77636d8f6689c22ad1611a.png

上一次我们学习了Cookie,知道Cookie是保存在客户端的。

那么有的小伙伴就问了,难道只有客户端能保存?服务器就不可以保存吗?!

5895b3f745ea2d0c1053da976a0d3e36.png

当然可以!

Session就是另一种记录用户状态的机制。

Flask的Session是基于Cookie实现的,经过加密保存在服务端的键值对(sesson[‘name’]=’value’)中。

当然,在服务器的Cookie中也对应一个相同的随机字符串,用来再次请求时验证。

一、Session的基本配置

因为Flask的Session是通过加密后放到Cookie中的,既然有加密就肯定有密钥,所以在使用Session模块时就一定要配置SECRET_KEY全局宏。一般我们可以自己设定一个随机字符串,例如:

app.config[‘SECRET_KEY’] = ‘XXXXXXX’

有些小伙伴可能会问:我能不能导入os模块自动生成随机字符串呢?

能!但是不建议。因为服务器每次启动后SECRET_KEY的值会被改变,会造成Session验证失败,用户还需要重新登录。糟糕的用户体验,可能不用几天网站就倒闭了!

二、设置Session

设置Session主要通过session[‘name’]=’value’方法来完成,name代表的是变量名称,value代表的是变量的值。

但是存在一个问题:服务器我们又接触不到,设置好的值怎么查看呢?

a56330ba0033bfe60b198504c5fb5529.png

哈,办法当然是有的。获取Session的值有两种方法,推荐使用第2种:

l result = session[‘name’]:如果内容不存在,将会报异常

l result = session.get(‘name’):如果内容不存在,将返回None

那万一设置错了怎么删除呢?

ab1f05112cd39743a86f11a2036dc59b.png

很简单!!删除单个Session的值,可以使用Session.pop(‘key’)方法,如果要清除多个值,可以使用Session.clear()方法。

那能不能像Cookie一样设置过期时间呢?

04872393576b278a7ebbd3d36a35e0d2.png

没问题!

Session.permanent = True可以将有效期延长至一个月,如果不设置,浏览器关闭后就自动结束了。

如果一个月太长怎么办?通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间。

三、Session实例

多说不如多练,新建app.py文件,代码如下:

from flask import Flask,session
from datetime import timedelta
import os
​
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)  #为了讲解用随机数
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)  #生成过期日期
@app.route('/')
def set_session():session['username'] = 'zhangsan'session.permanent = Truereturn "Session设置成功!"
​
#获取session
@app.route('/get_session')
def get_session():username = session.get('username')return username or "Session为空!"
​
#删除session
@app.route('/del_session')
def del_session():session.pop('username')return "Session被删除!"
​
if __name__ == "__main__":app.run(debug=True)

运行后访问网址http:127.0.0.1:5000/可以看到:

fbc1452128beed8c96f3d7d71a5dd036.png

“设置成功!”,切换到网址http:127.0.0.1:5000/get_session/可以看到:

b17b209d24a59c56a68417dc3a08b43f.png

“zhangsan”就是我们设置的值,再切换到网址http:127.0.0.1:5000/del_session/可以看到:

70a1464aad1e7160eee986584962be7a.png

“删除成功!”

是不是觉得so easy?!关于Session的内容就这么多,掌握了Cookie的话这节学起来会比较轻松。

98fa479559aba24567a4058544ad23ea.png

下一次将给小伙伴们介绍一下钩子函数的使用。

你确定不关注我一波?!

98f2136ec7ce654d8f2ae8f2c4f9f921.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经科学中的数学之美

来源:数学中国“不偏袒地讲,数学,不但掌握着真理,还是至美之物。”——罗素关于美学最新的神经学研究显示,视觉、听觉和道德上的美感体验都与“情绪化大脑”的同一个区域有关:内侧眶额叶皮层(me…

手机端富文本编辑器_谷歌Pixel系列手机每月更新无痛刷机技巧

本文适合小白,高手可以关闭。(以下技巧基本为Pixel3操作,window7平台,Pixel系列手机大同小异)谷歌Pixel系列手机属于小众手机,当中刷机有技巧,本人也是小白,经过无数次的实践经验得出…

什么是数据中台?全面解读数据中台

来源:与数据同行伴随着云计算、大数据、人工智能等IT技术迅速发展及与传统行业实现快速融合,一场由数字化和智能化转型带来的产业变革正在孕育。随着企业规模不断扩大、业务多元化——中台服务架构的应运而生。“中台”早期是由美军的作战体系演化而来的…

add结果 bigdecimal_java.math.BigDecimal.add(BigDecimal augend)方法

全屏java.math.BigDecimal.add(BigDecimal augend)方法java.math.BigDecimal.add(BigDecimal augend) 返回一个BigDecimal,其值为(this augend),其标度为 max(this.scale(), augend.scale())。声明以下是java.math.BigDecimal.add()方法的声明public Bi…

python导出oracle数据到excel_【python】 python 查询oracle数据生成excel

接上篇安装好了cx_Oracle.msi MySql.msi 下载安装 xlwt-0.7.5.tar.gz, 到安装目录下 命令窗口cmd下执行 python setup.py install即可 被引用的文件: # coding: utf-8 # xlswriter.py # http://pypi.python.org/pypi/xlwt import xlwt class XLSWriter(o…

指挥控制系统中的自然智能和人工智能

来源:人机与认知实验室【编者按:为什么美军的“深绿系统”不好用?并常常被指挥员所诟病。但这是指控系统智能化的关键之所在!你也许会简单地说:“是人、机、环境系统失调造成的”,若进一步问“那是怎样失调…

Sublime Text 3 搭建 React.js 开发环境

Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境。 1. babel-sublime 支持ES6, React.js, jsx代码高亮,对 JavaScript, jQuery 也有很好的扩展。关于 babel 的…

AI造假 vs AI打假 终结“猫鼠游戏”不能只靠技术

来源:和讯网人脸识别作为生物识别中的重要手段,成为了近年身份识别中最热门的领域。但与人脸识别技术共同发展的,还有借助机器学习系统、图像视频和音频内容,更改人脸、物体或环境呈现方式的深度伪造技术。随着这一技术的日趋成熟…

你好AI丨重读图灵经典之作,九条反驳意见引人深思

来源: AI科技评论编译 | 丛末、蒋宝尚当一台计算机能够骗过人类,让他们相信它就是一个人的时候,就能够被称作智能。编者按:对于艾伦图灵,相信大家都并不陌生,作为人工智能鼻祖,图灵的诸多观点即…

java 比较源文件_Beyond Compare比较Java源代码文件的操作方法

今天小编就带大家来共同学习BeyondCompare如何比较Java源代码文件希呢?望可以帮助到有需要的小伙伴哦,下面就是详细完整的操作步骤。打开BeyondCompare,在主页面左侧目录下选择文本比较会话,打开会话操作界面。分别单击比较会话界面“打开文…

关于研究的方法

转载于:https://www.cnblogs.com/freedommovie/p/6769717.html

【学术快报】韩世辉课题组在《eLife》发表论文揭示群体冲突中复仇的神经生物学机制...

来源:脑科学在群体冲突中,看到对手伤害自己的队友会激发报复行为,去攻击对手。这一复杂社会行为贯穿人类历史,阐明其机理具有重要科学意义和社会价值。心理学研究提出对“内群体的爱”(ingroup love)或/和对…

《面向对象程序设计》课程作业二

github链接作业链接编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来。……建立一个工程,将程序写成两个.cpp和一个.h的形式。 这个问题倒是没什么难的,但对于同学们来说是一个上手模块化的好开端。从现在开…

报告 | 超级智能城市2.0 – 人工智能引领新风尚(附下载)

来源:智慧城市决策参考未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联…

icmp协议_ICMP协议【41】

1、回顾TCP/IP协议栈为了更有效地转发IP数据报和提高交付成功的机会......2、ICMP协议的简介(1)ICMP,全称为Internet Control Message Protocol,即网际控制报文协议、网际控制消息协议。(2)它是TCP/IP协议族的一个子协议,用于在IP主机、路由器…

java的字节码无法显示_【java】查看Java字节码文件内容的方法+使用javap找不到类 解决方法...

研究synchronized底层实现,涉及到查看java字节码的需要前提是,你的PC已经成功安装了JDK并别配置了环境变量。查看方法一.javap查看简约字节码方式1.准备一个java文件例如,文件所在目录在此处Student.java文件内容如下:packagecom.…

SparkR

SparkR 支持原创:http://blog.csdn.net/dr_guo/article/details/51377784 突然有个想法,R只能处理百万级别的数据,如果R能运行在Spark上多好!搜了下发现13年SparkR这个项目就启动了,感谢美帝! 1.你肯定得先…

彻底颠覆神经科学?神经信号可能不是电信号,而是机械波?!

来源:环球科学就职于哥本哈根尼尔斯玻尔研究所的托马斯亨伯格(Thomas Heimburg),是一位研究量子力学和生物物理的物理学家。然而,他却希望推翻很多神经科学教科书上的内容。在亨伯格看来,神经元之间通过类似…

java可视化压缩_25个小众的Java库

25年前,James Gosling创建了Java,并永远地改变了编程语言的版图。与许多其他编程语言不同,Java在整个生命周期中都受到业界的高度欢迎和需求。Java具有非常优秀的Core库,提供了许多基本功能。 基于其高度流行性,因此也…

深度解读:人体防御病毒的免疫力究竟是什么?

来源:国际仿生工程学会“免疫力作为机体免除瘟疫的一种能力,已被广大民众广泛使用,特别是本次新型冠状病毒的暴发,更是使得免疫力在新闻媒体中广泛传播。对于这样一个极其抽象模糊的术语,我们需要理解其真实的含义是什…