美文网首页
Flask之六:cookie与session

Flask之六:cookie与session

作者: 奇奇乌布里 | 来源:发表于2020-04-26 11:43 被阅读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的两种方法

  • cookie是包含在 request请求的 header部分里的
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的到期时间默认是至浏览器关闭
  • 也可以设置session的到期时间app.permanent_session_lifetime = timedelta(minutes=1),然后开启session.permanent = True,则session就可以长时间有效了

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

  • 这里的 b表示把后面的字符串.encode('utf8'),详见《python字符串前的字母
  • 这个密钥一旦修改,之前客户端上保存的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

相关文章

网友评论

      本文标题:Flask之六:cookie与session

      本文链接:https://www.haomeiwen.com/subject/fkaaihtx.html