Flask之六:cookie与session

2020-04-26  本文已影响0人  奇奇乌布里

一、Cookie

用response对象的set_cookie方法来设置(更新)cookie

from flask import make_response  # 1.导入response对象生成器

@fit.route('/t/')
def fitt():
    # 2.把返回的内容(字符串)转换成一个response对象(一般是在return时自动转成response的,这里因为要设置cookie,所以先手动转为response)
    rsp = make_response('Hello Sawasdee Salut Ohayo')
    # 3.给对象添加【设置】cookie命令
    rsp.set_cookie('username', 'pom')
    return rsp  # 4.返回,浏览器即可储存一个cookie

用request对象的cookies属性来获取cookie的两种方法

from flask import request  # 1.导入request对象

@fit.route('/t/')
def fitt():
    # 2a.方式1:如果没有username这个cookie,则返回None【推荐】
    s3 = request.cookies.get('username')
    # 2b.方式2:如果没有username这个cookie,则出发KeyError错误
    s3 = request.cookies['username']
    return '-=- %s -=-' % s3

用response对象的delete_cookie方法来删除cookie

from flask import make_response  # 1.导入response对象生成器

@fit.route('/t2/')
def fitt2():
    # 2.把返回的内容(字符串)转换成一个response对象
    rsp = make_response('Hello Sawasdee Salut Ohayo')
    # 3.给对象添加【删除】cookie命令
    rsp.delete_cookie('username')
    return rsp  # 4.返回,浏览器即可删除一个cookie

二、Session

session比cookie更加 安全 ,但是cookie比session更加 持久

在使用session之前,需要在主py中设置session的密钥

# 设置session的密钥,越复杂越好 【属于敏感信息】
app.secret_key = b'123456'

设置(更新)session像字典一样

from flask import session  # 导入session实例

@fit.route('/t1/')
def fitt2():
    session['username'] = 'Win'  # 直接设置即可
    return 'session set done'

读取session也有两种方法

from flask import session  # 导入session实例

@fit.route('/t0/')
def fitt():
    # 方法1:用get,没有的话也不会报错
    a = ('%s' % session.get('username')) if session.get('username') is not None else 'Nobody'
    
    # 方法2:直接用[],如果没有要报错
    a = ('%s' % session['username']) if session['username'] is not None else 'Nobody'
    return 'watdeezaa kun %s' % a

删除session用pop

from flask import session  # 导入session实例

@fit.route('/t2/')
def ft():
    session.pop('username', None)  # pop掉就删除了
    return 'session[username] is dropped!'

三、localStroage保存

如下:

var objA = {
    name: "奇奇乌布里",
    age: "16"
}

localStroage.setItem('user', JSON.stringify(objA)) // save
var name = JSON.parse(localStroage.getItem('user')).name // read
localStorage.removeItem("user")  // delete
上一篇下一篇

猜你喜欢

热点阅读