Flask中的session操作
一、配置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,session
2 import os
3
4 app = Flask(__name__)
5 app.config['SECRET_KEY'] = os.urandom(24)
6
7 # 设置session
8 @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,session
2 import os
3
4 app = Flask(__name__)
5 app.config['SECRET_KEY'] = os.urandom(24)
6
7 # 设置session
8 @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-8
2
3 from flask import Flask,session
4 import os
5
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-8
2
3 from flask import Flask,session
4 import os
5
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-8
2
3 from flask import Flask,session
4 from datetime import timedelta
5 import os
6
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'


Flask中的session操作的更多相关文章
- Flask中的session ,自定义实现 session机制, 和 flask-session组件
session 是基于cookie实现, 保存在服务端的键值对(形式为 {随机字符串:'xxxxxx'}), 同时在浏览器中的cookie中也对应一相同的随机字符串,用来再次请求的 时候验证: 注意 ...
- 将 flask 中的 session 存储到 SQLite 数据库中
将 flask 中的 session 存储到 SQLite 数据库中 使用 flask 构建服务器后端时,常需要在浏览器端存储 cookie 用于识别不同用户,根据不同的 cookie 判断出当前请求 ...
- Flask初学者:session操作
cookie:是一种保存数据的格式,也可以看成是保存数据的一个“盒子”,服务器返回cookie给浏览器(由服务器产生),由浏览器保存在本地,下次再访问此服务器时浏览器就会自动将此cookie一起发送给 ...
- Flask中的session机制
cookie和sessioncookie:网站中,http请求是无状态的,第一次和服务器连接后并且登陆成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是解决了改问题,第一次 ...
- Python框架学习之Flask中的数据库操作
数据库操作在web开发中扮演着一个很重要的角色,网站中很多重要的信息都需要保存到数据库中.如用户名.密码等等其他信息.Django框架是一个基于MVT思想的框架,也就是说他本身就已经封装了Model类 ...
- Flask中的session和cookie以及日志
一.笔记一session: 首先对于session在flask中应该是加密签名的cookie,所以要先生成secret_key app.secret_key = os.environ.get('SEC ...
- flask中的session cookie 测试 和 项目中的用户状态保持
# -*- coding:utf-8 -*- # Author: json_steve from flask import Flask, current_app, make_response, req ...
- flask中cookie,session的存储,调用,删除 方法(代码demo)
# -*- encoding: utf-8 -*- # cookie,session的存储,调用,删除 from flask import Flask,make_response,request,se ...
- flask中的数据操作
flask中数据访问: pip install flask-sqlalemy 创建数据: 创建app的工厂 from flask import Flask from flask_sqlalchemy ...
随机推荐
- 从头认识java-15.2 Collection的经常用法(2)-注意点
上一章节我们讲述了Collection的经常用法.还有之前的章节我们介绍了Collection的addAll方法,这一章节我们介绍一下它的注意点. 注意点就是,在经常用法里面,基本都是可选操作. 什么 ...
- arm下用shell控制gpio
创建脚本gpio.sh #!/bin/sh PIN=$ VALUE=$ if test -d /sys/class/gpio/gpio$PIN/ then echo $VALUE > /sys/ ...
- Android中关闭DatePicker、TimePicker、NumberPicker的可编辑模式
DatePicker.TimePicker.NumberPicker这三个控件在使用的过程中,用户点击数字会弹出键盘,有时候会造成布局被挤压不好看,也有其他的需求. 我看了网上很多文章的解决办法都无效 ...
- hdoj--5612--Baby Ming and Matrix games(dfs)
Baby Ming and Matrix games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K ...
- php 制作略缩图
一.需求 最近公司的项目中有个需求,就是用户上传自己的微信二维码,然后系统会自动将用户的微信二维码合并到产品中 二.分析 因为该系统是手机端的,所以从用户端的体验出发,用户当然是直接在微信上保存二维码 ...
- angular的directive指令的link方法
比如 指令标签 <mylink myLoad="try()"></mylink> link:function(scope,element,attr){ el ...
- ThreadLocal,静态变量,实例变量,局部变量的线程安全
之前都是业务层次开发,现在公司进行的网络编程,一下子要了解太多java底层的东西并进行应用,我现在边学习边应用.由于知识能力有限,在上次发博客时出现了一个小小的纰漏,而这个纰漏被细心的博友发现了. 首 ...
- POJ 1111(数字很吉利嘛) 简单BFS
Image Perimeters Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8594 Accepted: 5145 Desc ...
- springMVC上传图片,json交互(三)
@RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则. @RequestMapping(value="item")或@RequestM ...
- 在mac上截屏的几种方式
方法 1: 对屏幕的一部分进行截图 按下Command+Shift+4 方法 2: 对整个屏幕进行截图 按下Command+Shift+3 方法 3: 把截图保存到粘贴板 按下Command+ ...