美文网首页
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