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 ...
 
随机推荐
- 20170322Linux
 - luogu1357 花园 状态压缩 矩阵快速幂
			
题目大意 小L有一座环形花园,沿花园的顺时针方向,他把各个花圃编号为1~N(2<=N<=10^15).他的环形花园每天都会换一个新花样,但他的花园都不外乎一个规则,任意相邻M(2<= ...
 - [POJ 1745] Divisbility
			
[题目链接] http://poj.org/problem?id=1745 [算法] DP [代码] #include <algorithm> #include <bitset> ...
 - 对ip数据进行分类----c++
			
#!/usr/bin/expect set ip [lindex $argv ] set password [lindex $argv ] spawn -l root ${ip} "host ...
 - Django day01 web应用程序 , http协议
			
一:web应用程序1.什么是web应用程序 是一种可以通过web访问的应用程序,最大的好处就是, 只要有浏览器,用户就能很容易访问到应用程序 2. web应用程序的优缺点 缺点: 应用程序强调了浏览器 ...
 - 工具分享1:文本编辑器EditPlus、汇编编译器masm、Dos盒子
			
工具已打包好,需要即下载 链接 https://pan.baidu.com/s/1dvMyvW 密码 mic4
 - Ubuntu下搭建repo服务器(一):  配置gitosis
			
1. 说明 服务器端IP: 192.168.1.126,下文简称:A端: 客户端IP: 192.168.130.19,下文简称:B端: Android工程代号:17435. 2. 安装必要软件(A端) ...
 - NSLayoutConstraints加动画来改变约束
			
// // ViewController.m // NSLayoutAnimationDemo // // Created by ebaotong on 15/7/22. // Copyright ( ...
 - android 将手机号中间隐藏为星号(*)
			
){ StringBuilder sb =new StringBuilder(); ; i < pNumber.length(); i++) { char c = pNumber.charAt( ...
 - oracle从入门到精通复习笔记续集之PL/SQL(轻量版)
			
复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结 ...