一、配置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操作的更多相关文章

  1. Flask中的session ,自定义实现 session机制, 和 flask-session组件

    session 是基于cookie实现, 保存在服务端的键值对(形式为 {随机字符串:'xxxxxx'}), 同时在浏览器中的cookie中也对应一相同的随机字符串,用来再次请求的 时候验证: 注意 ...

  2. 将 flask 中的 session 存储到 SQLite 数据库中

    将 flask 中的 session 存储到 SQLite 数据库中 使用 flask 构建服务器后端时,常需要在浏览器端存储 cookie 用于识别不同用户,根据不同的 cookie 判断出当前请求 ...

  3. Flask初学者:session操作

    cookie:是一种保存数据的格式,也可以看成是保存数据的一个“盒子”,服务器返回cookie给浏览器(由服务器产生),由浏览器保存在本地,下次再访问此服务器时浏览器就会自动将此cookie一起发送给 ...

  4. Flask中的session机制

    cookie和sessioncookie:网站中,http请求是无状态的,第一次和服务器连接后并且登陆成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是解决了改问题,第一次 ...

  5. Python框架学习之Flask中的数据库操作

    数据库操作在web开发中扮演着一个很重要的角色,网站中很多重要的信息都需要保存到数据库中.如用户名.密码等等其他信息.Django框架是一个基于MVT思想的框架,也就是说他本身就已经封装了Model类 ...

  6. Flask中的session和cookie以及日志

    一.笔记一session: 首先对于session在flask中应该是加密签名的cookie,所以要先生成secret_key app.secret_key = os.environ.get('SEC ...

  7. flask中的session cookie 测试 和 项目中的用户状态保持

    # -*- coding:utf-8 -*- # Author: json_steve from flask import Flask, current_app, make_response, req ...

  8. flask中cookie,session的存储,调用,删除 方法(代码demo)

    # -*- encoding: utf-8 -*- # cookie,session的存储,调用,删除 from flask import Flask,make_response,request,se ...

  9. flask中的数据操作

    flask中数据访问: pip install flask-sqlalemy 创建数据: 创建app的工厂 from flask import Flask from flask_sqlalchemy ...

随机推荐

  1. Xcode HeaderDoc 教程(3)

    打开 MathAPI.h,将第一个 @param 标签的參数名由firstNumber 改动为 thirdNumber,然后编译. 有一个警告发生.甚至提出了改动建议.它不会影响不论什么事情,但有助于 ...

  2. ASP.NET MVC 客户端验证失败后表单仍然提交问题

    客户端验证失败后表单仍然提交问题!导致页面刷新,辛辛苦苦输入的内容荡然无存. 多么奇怪的问题.按道理,验证失败,就应该显示各种错误信息,不会提交表单才对.而现在,错误信息正常显示,但页面却刷新了一遍. ...

  3. 使用U-Boot的TFTP(远程/网络内核)

    前提条件 假设您的主机PC运行的是Ubuntu 14.04.1 LTS或更高版本,并且与您的开发平台在同一个本地网络上;为了简单起见,我们假设网络上也有DHCP服务器.如果使用Juno,请确保使用的是 ...

  4. oc56--ARC多个对象的内存管理

    // main.m // ARC中多个对象的内存管理:ARC的内存管理就是MRC的内存管理(一个对象释放的时候,必然会把它里面的对象释放),只不过一个是Xcode加的代码,一个是我们自己加的代码: / ...

  5. poj--1101--The Game(bfs)

    The Game Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9746   Accepted: 2967 Descript ...

  6. RTP协议分析和详解

    一.RTP协议分析 第1章.     RTP概述 1.1.  RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RF ...

  7. bzoj1895

    fhqtreap 其实fhqtreap只有可持久化之后才用新建节点... reverse和splay一样. //#include<bits/stdc++.h> #include<cs ...

  8. SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

    SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...

  9. springMVC返回数据的四种方式

    转自:https://blog.csdn.net/itcats_cn/article/details/82119673 springMVC返回数据的四种方式:第一种,通过request.setAttr ...

  10. 分享的js代码,从w3c上拓下来的

    <!DOCTYPE html><html><head> <title></title> <script>window._bd_s ...