Flask零基础到项目实战(六)cookie和session--操作session(二)

文章来源—知了课堂的课件


一、配置SECRET_KEY

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

配置方法一:

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

# encoding: utf-8

SECRET_KEY = 'XXXXXXXXX'

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

# encoding: utf-8

from flask import Flask,session
import config

app = Flask(__name__)
app.config.from_object(config)



配置方法二:

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

# encoding: utf-8

from flask import Flask,session

app = Flask(__name__)
app.config['SECRET_KEY'] = 'XXXXX'

产生方法

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

import os

app.config['SECRET_KEY'] = os.urandom(24) # 随机产生24位的字符串作为SECRET_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' # 设置“字典”键值对
    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')
    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')
    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'
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值