Flask中的session详细用法教程

**Flask session 概念解释:**

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

注意 :Flask中的session是存在浏览器中  默认key是session(加密的cookie), 也可以像Django一样基于上述的方式实现保存在数据库

一、配置SECRET_KEY

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

配置方法一:

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

config.py

SECRET_KEY = 'XXXXXXXXX'

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

main.py

#encoding: utf-8
from flask import Flask,session
import config
app = Flask(__name__)

配置方法二:

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

encoding: utf-8
 
from flask import Flask,session
 
app = Flask(__name__)
app.config['SECRET_KEY'] = 'XXXXX' 或者随机数(os.urandom(24))
或者
app.secret_key = 'why would I tell you my secret key?'
key值可以使用随机数,或者自定义

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

1.设置session

from flask import Flask,session
import os
 
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
 
# 设置session
 @app.route('/')
def set():
     session['username'] = 'liefyuan' # 设置“字典”键值对(正式开发时候,值需要session.get('user')获取)
     return 'success'
 
 if __name__ == '__main__':
     app.run()

2.读取session

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

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

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

from flask import Flask,session
import os
 
 app = Flask(__name__)
 app.config['SECRET_KEY'] = os.urandom(24)
 
 # 设置session
 @app.route('/')
 def set():
     session['username'] = 'liefyuan' # 设置“字典”键值对
     return 'success'
 
 # 读取session
 @app.route('/get')
 def get():
     # session['username']
     # session.get('username')
     return session.get('username')
 
 if __name__ == '__main__':
     app.run()

3.删除session

#encoding: utf-8
 from flask import Flask,session
 import os
 app = Flask(__name__)
 app.config['SECRET_KEY'] = os.urandom(24)
 
 # 设置session
 @app.route('/')
 def set():
     session['username'] = 'liefyuan'
     return 'success'
     
 # 读取session
 @app.route('/get/')
 def get():
     # session['username']
     # session.get('username')
     return session.get('username')
     
 # 删除session
 @app.route('/delete/')
 def delete():
     print session.get('username')
     session.pop('username',None) 或者 session['username'] = False
     print session.get('username')
     return 'success'
 if __name__ == '__main__':
     app.run()

4.清除session中所有数据

#encoding: utf-8
 
 from flask import Flask,session
 import os
 
 app = Flask(__name__)
 app.config['SECRET_KEY'] = os.urandom(24)
 
 
 # 设置session
 @app.route('/')
 def set():
     session['username'] = 'liefyuan'
     return 'success'
 
 
 # 读取session
 @app.route('/get')
 def get():
     # session['username']
     # session.get('username')
     return session.get('username')
 
 
 # 删除session
 @app.route('/delete')
 def delete():
     print session.get('username')
     session.pop('username') 或者 session['username'] = False
     print session.get('username')
     return 'success'
 
 
 # 清除session中所有数据
 @app.route('/clear')
 def clear():
     print session.get('username')
     # 清除session中所有数据
     session.clear
     print session.get('username')
     return 'success'
 
 if __name__ == '__main__':
     app.run()

三、设置session的过期时间

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

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

使用的需求:

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

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

  • 1.引入包:from datetime import timedelta
  • 2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
  • 3.设置:session.permanent = True
#encoding: utf-8
from flask import Flask,session
from datetime import timedelta
import os 
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效 

# 设置session
@app.route('/')
def set():
    session['username'] = 'liefyuan'
    session.permanent = True
    return 'success'

原文地址:http://blog.51cto.com/douya/2151255

时间: 2024-10-12 21:20:20

Flask中的session详细用法教程的相关文章

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

session 是基于cookie实现, 保存在服务端的键值对(形式为 {随机字符串:‘xxxxxx’}), 同时在浏览器中的cookie中也对应一相同的随机字符串,用来再次请求的 时候验证: 注意 :Flask中的session是存在浏览器中 默认key是session(加密的cookie), 也可以像Django一样基于上述的方式实现保存在数据库 1 flask中 session的基本概念 flask 有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookie

flask中的session

简述session,cookie session  :  session和cookie的作用类似,都是为了 存储用户有关的信息,不同的是,cookie是村塾在本地浏览器,session是存储在服务器.存储在服务器的数据相对来说更加安全,不容易被窃取.但储存在服务器有一定的弊端,就是会占用服务器的资源,但现在服务器发展至今,一些session信息还是绰绰有余的. 好处:敏感数据不是直接发给浏览器,而是发送回一个session_id,服务器将session_id和敏感数据做一个映射存储在sessio

linux系统中‘find’的详细用法

"find"指令是linux系统下较为常用的指令,它常见的用法我们也需要掌握,下面主要是对'find'指令的常见用法作一下总结,希望能够对其他人有所帮助. 在linux系统下用"ls"指令查看目录如下: 1.find指令的一般格式: find [path...] -options [-print / -ecex / -ok] 其中:path表示要查找的目录路径 ~表示home目录                        .表示当前目录             

perl中grep的详细用法

最近一直在学习perl语言,下面介绍下如果和在perl编程中使用强大的grep函数. 1. Grep函数grep有2种表达方式: 1 grep BLOCK LIST 2 grep EXPR, LIST BLOCK表示一个code块,通常用{}表示:EXPR表示一个表达式,通常是正则表达式.原文说EXPR可是任何东西,包括一个或多个变量,操作符,文字,函数,或子函数调用. LIST是要匹配的列表. grep对列表里的每个元素进行BLOCK或EXPR匹配,它遍历列表,并临时设置元素为$_.在列表上下

vue中watch的详细用法

在vue中,使用watch来响应数据的变化.watch的用法大致有三种.下面代码是watch的一种简单的用法: <input type="text" v-model="cityName"/> new Vue({ el: '#root', data: { cityName: 'shanghai' }, watch: { cityName(newName, oldName) { // ... } } }) 直接写一个监听处理函数,当每次监听到 cityNam

flask中的session,render_template()第二和参数是字典

1. 设置一个secret_key 2.验证登入后加上session,这是最简单,不保险 . 3.注意render_template传的参数是字典

Python中字典的详细用法

#字典 #字典是Python中唯一内建的映射类型.字典中没有特殊的顺序,但都是存储在一个特定的键(key)下面,键可以是数字,字符串,甚至是元组 #一.字典的使用 #在某些情况下,字典比列表更加适用: #1.表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组 #2.存储文件修改时间,用文件名作为键; #3.数字电话\地址薄 #1.使用列表创建一个电话本,(这里用字符串表示电话号码,以0开头的数字回会被编译成8进制数字) name=["A","B","C&

flask中的session对象方法

'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'modified', 'new', 'on_update', 'permanent', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues'

Flask最强攻略 - 跟DragonFire学Flask - 第六篇 Flask 中内置的 Session

Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from flask import session app = Flask(__name__) app.secret_key = "DragonFire" secret_key 实际上是用来加密字符串的,如果在实例化的app中没有 secret_key 那么开启session一定会抛异常的 2.