Flask中的session操作

https://www.cnblogs.com/notzy/p/9187304.html 

一、配置SECRET_KEY

因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。配置方法一般有两种。

配置方法一:

新建一个config.py的文件配置secret_key 
config.py

 1 SECRET_KEY = 'XXXXXXXXX' 

 

然后在主运行文件里面添加config文件里面的内容。 
main.py

复制代码

1 # encoding: utf-8
2 
3 from flask import Flask,session
4 import config
5 
6 app = Flask(__name__)

复制代码

 

配置方法二:

直接在主运行文件里面配置。配置config的时候也是和操作字典是一样的 
main.py

复制代码

1 # encoding: utf-8
2 
3 from flask import Flask,session
4 
5 app = Flask(__name__)
6 app.config['SECRET_KEY'] = 'XXXXX'

复制代码

 

产生方法

 可以引入OS模块中的产生一个24位的随机字符串的函数,这种方法有个缺点,就是服务器每次启动之后这个SECRET_KEY的值都会变。具体自己体会!

1 import os
2 
3 app.config['SECRET_KEY'] = os.urandom(24) # 随机产生24位的字符串作为SECRET_KEY

 

二、操作session –操作session就如同操作字典!

1.设置session

复制代码

 1 from flask import Flask,session2 import os3 4 app = Flask(__name__)5 app.config['SECRET_KEY'] = os.urandom(24)6 7 # 设置session8 @app.route('/')9 def set():
10     session['username'] = 'liefyuan' # 设置“字典”键值对
11     return 'success'
12 
13 if __name__ == '__main__':
14     app.run()

复制代码

 

2.读取session

 因为session就像字典一样所以,操作它的时候有两种方法:

  • (1)result = session[‘key’] :如果内容不存在,将会报异常
  • (2)result = session.get(‘key’) :如果内容不存在,将返回None

所以,使用第二种方法获取session较好。

复制代码

 1 from flask import Flask,session2 import os3 4 app = Flask(__name__)5 app.config['SECRET_KEY'] = os.urandom(24)6 7 # 设置session8 @app.route('/')9 def set():
10     session['username'] = 'liefyuan' # 设置“字典”键值对
11     return 'success'
12 
13 # 读取session
14 @app.route('/get')
15 def get():
16     # session['username']
17     # session.get('username')
18     return session.get('username')
19 
20 if __name__ == '__main__':
21     app.run()

复制代码

 

3.删除session

复制代码

 1 #encoding: utf-82 3 from flask import Flask,session4 import os5 6 app = Flask(__name__)7 app.config['SECRET_KEY'] = os.urandom(24)8 9 
10 # 设置session
11 @app.route('/')
12 def set():
13     session['username'] = 'liefyuan'
14     return 'success'
15 
16 
17 # 读取session
18 @app.route('/get/')
19 def get():
20     # session['username']
21     # session.get('username')
22     return session.get('username')
23 
24 
25 # 删除session
26 @app.route('/delete/')
27 def delete():
28     print session.get('username')
29     session.pop('username')
30     print session.get('username')
31     return 'success'
32 
33 
34 if __name__ == '__main__':
35     app.run()

复制代码

 

4.清除session中所有数据

复制代码

 1 #encoding: utf-82 3 from flask import Flask,session4 import os5 6 app = Flask(__name__)7 app.config['SECRET_KEY'] = os.urandom(24)8 9 
10 # 设置session
11 @app.route('/')
12 def set():
13     session['username'] = 'liefyuan'
14     return 'success'
15 
16 
17 # 读取session
18 @app.route('/get')
19 def get():
20     # session['username']
21     # session.get('username')
22     return session.get('username')
23 
24 
25 # 删除session
26 @app.route('/delete')
27 def delete():
28     print session.get('username')
29     session.pop('username')
30     print session.get('username')
31     return 'success'
32 
33 
34 # 清除session中所有数据
35 @app.route('/clear')
36 def clear():
37     print session.get('username')
38     # 清除session中所有数据
39     session.clear
40     print session.get('username')
41     return 'success'
42 
43 if __name__ == '__main__':
44     app.run()

复制代码

 

三、设置session的过期时间

 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束。session.permanent = True在flask下则可以将有效期延长至一个月。下面有方法可以配置具体多少天的有效期。

  • 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
  • 如果设置了session的permanent属性为True,那么过期时间是31天。
  • 可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。

使用的需求:

  • 1.在登录网页界面,下面有一个“记住我”选项,如果点击了则设置session的有效期长一点。就是设置这个!

复制代码

1 # 设置session
2 @app.route('/')
3 def set():
4     session['username'] = 'liefyuan'
5     session.permanent = True # 长期有效,一个月的时间有效
6     return 'success'

复制代码

 

一种更先进的配置有效期的方法:(比如配置7天有效)

  • 1.引入包:from datetime import timedelta
  • 2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
  • 3.设置:session.permanent = True

复制代码

 1 #encoding: utf-82 3 from flask import Flask,session4 from datetime import timedelta5 import os6 7 app = Flask(__name__)8 app.config['SECRET_KEY'] = os.urandom(24)9 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
10 
11 
12 # 设置session
13 @app.route('/')
14 def set():
15     session['username'] = 'liefyuan'
16     session.permanent = True
17     return 'success'

复制代码

 

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

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

相关文章

逆向Android软件的步骤

2019独角兽企业重金招聘Python工程师标准>>> 逆向Android软件的步骤: 首先使用反编译的工具对反编译,然后阅读反汇编代码,如果有必要还会对其进行动态调试,找到突破口后注入或直接修改反汇编代码,最后重新编…

CRT 重启Was

输入用户名、密码登陆以后 # ps -eaf | grep websphere 找到路径 /usr/IBM/WebSphere/AppServer/ 进入/usr/IBM/WebSphere/AppServer/bin 运行 stopServer.sh server1 其中server1为服务器实例名 需要输入登陆was控制台的用户名、密码 运行 startServer.sh server1 即完成服务器…

JAVA中跨平台分隔符

在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常。 比如说要在temp目录下建立一个test.txt文件,在Windows下应该这么写:File file1 new File (&q…

Flask Sessions会话

与Cookie不同,会话数据存储在服务器上。会话是客户端登录到服务器并注销的时间间隔。需要在此会话中进行的数据存储在服务器上的临时目录中。 与每个客户端的会话分配一个会话ID。会话数据存储在cookie顶部,服务器以加密方式签名。对于这种加密&#xf…

linux rsync 远程同步

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。工作机制: 在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客…

GUI 快捷键的实现思路

思路: 前提快捷键操作不可重复,即一个快捷键对应一个控件的动作一个窗体保持一份快捷键的map映射在相应的消息中获取快捷键列表如键盘消息在控件类对象中定义一个默认的响应行为,比如Button按了Enter键当子控件隐藏,父控件关系发生变化时则重新设置快捷键转载于:https://www.cn…

hadoop中unhealthynodes的问题解决

在yarn-site.xml中加入如下配置 <property> <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name> <value>0.0</value> </property> <property><name>yarn.nodemanager.disk-health-checker.max-d…

javascript权威指南——笔记(第十章:正则)

正则表达式是描述字符模式的对象 为什么使用正则&#xff1a; 1.找数字 1 var str "12 f13kjm54n43 43k";2 var arr [];3 4 for(var i 0, len str.length; i<len; i){5 6 var char str.charAt(i);7 8 if(char > "0"…

解決 centos -bash: vim: command not found

i. 那么如何安裝 vim 呢? 输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码: rootserver1 [~]# rpm -qa|grep vim vim-enhanced-7.0.109-7.el5 vim-minimal-7.0.109-7.el5 vim-common-7.0.109-7.el5 如果少了其中的某一条,比如 vim-enhanced 的,就…

mysql日期和时间类型

mysql日期和时间类型 mysql有5种表示时间值的日期和时间类型&#xff0c;分别为、DATE&#xff0c;TIME&#xff0c;YEAR&#xff0c;DATETIME&#xff0c;TIMESTAMP。 TIMESTAMP类型有专有的自动更新特性&#xff0c; TIMESTAMP类型有专有的自动更新特性&#xff0c; TIME…

Python程序每日一练习

问题一&#xff1a;做为Apple Store App独立开发者&#xff0c;你要搞限时促销&#xff0c;为你的应用生成激活码&#xff08;或者优惠券&#xff09;&#xff0c;使用Python如何生成200个激活码&#xff08;或者优惠券&#xff09;&#xff1f; 简介&#xff1a;通用唯一识别码…

C/C++查找一定范围内的素数(筛法)

本文转自于&#xff1a;http://dalu.blogbus.com/logs/37977984.html 由于一个合数总是可以分解成若干个质数的乘积&#xff0c;那么如果把质数&#xff08;最初只知道2是质数&#xff09;的倍数都去掉&#xff0c;那么剩下的就是质数了。例如要查找100以内的质数&#xff0c;首…

mysql中char,varchar与text类型的区别和选用

关于char&#xff0c;varchar与text平时没有太在意&#xff0c;一般来说&#xff0c;可能现在大家都是用varchar。但是当要存储的内容比较大时&#xff0c;究竟是选择varchar还是text呢&#xff1f;不知道。。。。。。 text 、 char、varchar 是数据在数据库中的存放策略问题…

循环Map方法

public static void main(String[] args) { Map<String, String> map new HashMap<String, String>(); map.put("1", "张三"); map.put("2", "李四"); map.put("3", "王五"); /*方法一 &#xff1a;…

rsync备份学习

备份内容&#xff1a;把虚拟机A&#xff08;192.168.91.243&#xff09;需要把文件备份到虚拟机B&#xff08;192.168.91.207&#xff09; 一、检查两台虚拟机是否已经安装rsync rsync -version命令检查 二、如果没有安装rsync&#xff0c;需要先安装rsync 在客户端和服务器…

四大组件的工作过程

1、四大组件的运行状态 Android的四大组件中除了BroadcastReceiver以外&#xff0c;其他三种组件都必须在AndroidManifest中注册&#xff0c;对于BroadcastReceiver来说&#xff0c;既可以在AndroidManifest中注册也可以通过代码来…

联系表单 1_copy

你的名字 &#xff08;必填&#xff09; [text* your-name] 你的邮箱 &#xff08;必填&#xff09; [email* your-email] 主题 [text your-subject] 你的留言 [textarea your-message] [submit "发送"] [your-subject] [your-name] < [your-email]> 发件人…

Windows下使用VisualSVN Server搭建SVN服务器

2019独角兽企业重金招聘Python工程师标准>>> 使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和Apache相配合来实现源代码的 SVN管理简单的多&#xff0c;下面就看看详细的说明。 VisualSVN Server的下载地址如下&#xff0c;是免费的&#xff0c;随…

新装的linux系统,用SSH连接出现乱码怎么办?附改名虚拟机文件方法

原因&#xff1a;SSH不支持中文&#xff0c;需要系统语言设置 1、查看当前操作系统的语言 echo $LANG 2、临时更改默认语言(关闭当前会话失效) export LANGen_US.UTF-8 3、永久生效,编辑文件保存并退出 vi /etc/sysconfig/i18n LANG"en_US.UTF-8" 4、使其…

hdu 6183 线段树的空间优化

题意&#xff1a; 一个空的坐标系&#xff0c;有④种操作&#xff1a;①1 x y c表示在(x, y)点染上颜色c&#xff1b;②2 X y1 y2表示查询在(1, y1)到(X, y2)范围内有多少种不同的颜色&#xff1a; ③0表示清屏&#xff1b;④3表示程序退出&#xff08;0<x, y<1000000, 0…