一、配置SECRET_KEY

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

配置方法一:

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

 1 SECRET_KEY = 'XXXXXXXXX' 

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

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

配置方法二:

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

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

产生方法

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

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

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

1.设置session

Flask中的session操作-LMLPHP
 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()
Flask中的session操作-LMLPHP

2.读取session

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

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

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

Flask中的session操作-LMLPHP
 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()
Flask中的session操作-LMLPHP

3.删除session

Flask中的session操作-LMLPHP
 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()
Flask中的session操作-LMLPHP

4.清除session中所有数据

Flask中的session操作-LMLPHP
 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()
Flask中的session操作-LMLPHP

三、设置session的过期时间

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

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

使用的需求:

  • 1.在登录网页界面,下面有一个“记住我”选项,如果点击了则设置session的有效期长一点。就是设置这个!
Flask中的session操作-LMLPHP
1 # 设置session
2 @app.route('/')
3 def set():
4 session['username'] = 'liefyuan'
5 session.permanent = True # 长期有效,一个月的时间有效
6 return 'success'
Flask中的session操作-LMLPHP

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

  • 1.引入包:from datetime import timedelta
  • 2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
  • 3.设置:session.permanent = True
Flask中的session操作-LMLPHP
 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操作-LMLPHP
 
 
 
好文要顶 关注我 收藏该文 Flask中的session操作-LMLPHP Flask中的session操作-LMLPHP
05-11 15:38
查看更多