一、配置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. wordpress相关

    事故:wordpress不论什么页面所有是404 not found,找不到不论什么页面. 解决:在nginx.conf中80port以下的凝视消除掉. location ~ \.php$ {     ...

  2. 《解读window核心编程》 之 注冊表

    1 注冊表的作用及组织形式 Windows系统使用注冊表来存储系统和应用程序配置数据.非常多系统和应用程序重要的配置的信息都存储在注冊表中. 注冊表是一种以树型结构组织的数据库.树的每个节点称 作键( ...

  3. golang文件读写三种方式——bufio,ioutil和os.create

    package main import ( "bufio" "fmt" "io/ioutil" "os" ) func ...

  4. aspectc中this可以获取的东西

    this->kind  操作类型 this->targetName 被调用函数名称 this->funcName 调用函数名称 this->argsCount 参数个数 thi ...

  5. codeforces——思路与规律

    codeforces 804B     http://codeforces.com/problemset/problem/804/B /* 题意:给定一个只含ab的序列,每次操作可将ab变为bba 问 ...

  6. SpringBoot + Redis:基本配置及使用

    注:本篇博客SpringBoot版本为2.1.5.RELEASE,SpringBoot1.0版本有些配置不适用 一.SpringBoot 配置Redis 1.1 pom 引入spring-boot-s ...

  7. c#,Java aes加密

    1.c#版本 /// <summary> /// Aes加密解密.c#版 /// </summary> public class BjfxEncryptHelper { /// ...

  8. 前端编码规范(2)HTML 规范

    文档类型 推荐使用 HTML5 的文档类型申明: <!DOCTYPE html> (建议使用 text/html 格式的 HTML.避免使用 XHTML.XHTML 以及它的属性,比如 a ...

  9. 大白话理解箭头函数this

    var obj1={ num:4, fn:function(){ num:5; var f=() => { num:6; console.log(this.num); //4 外层非箭头函数包裹 ...

  10. js函数-参数传递

    写js的时候,函数是不可避免的,几乎90%的js都是由函数组成的,函数之间考什么连接,参数! 好了,用代码的运行结果说明问题. function fn1(str,strs){ var str=&quo ...