加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Flask会话变量在请求之间不存在

发布时间:2021-01-12 01:28:17 所属栏目:Python 来源:互联网
导读:使用下面的应用程序和Flask 0.11.1,我导航到与以下函数调用关联的路由,给定结果: create():’1,2,3’#OK 删除(1):’2,3’#OK 删除(2):’1,3’#expected’3′ maintain():’1,2,3’#expected’1,3’或’3′ from flask import Flask, sessionapp = Flask(

使用下面的应用程序和Flask 0.11.1,我导航到与以下函数调用关联的路由,给定结果:

> create():’1,2,3’#OK
>删除(1):’2,3’#OK
>删除(2):’1,3’#expected’3′
> maintain():’1,3’#expected’1,3’或’3′

from flask import Flask,session

app = Flask(__name__)

@app.route('/')
def create():
    session['list'] = ['1','2','3']
    return ",".join(session['list'])

@app.route('/m')
def maintain():
    return ",".join(session['list'])

@app.route('/r/<int:id>')
def remove(id):
    session['list'].remove(str(id))
    return ",".join(session['list'])

if __name__ == '__main__':
    app.secret_key = "123"
    app.run()

这个问题在主题上类似于this question,this和this one,但是我设置了密钥而没有重新生成它,我的变量肯定不大于cookie允许的4096字节.也许我错过了一些关于Flask会话变量的基本理解?

解决方法

Flask使用 CallbackDict来跟踪会话的修改.

它只会在您设置或删除密钥时注册修改.在这里,您可以修改它不会检测到的值.试试这个:

@app.route('/r/<int:id>')
def remove(id):
    val = session['list']
    val.remove(str(id))
    session['list'] = val
    return ",".join(session['list'])

…和其他更改相同,或者您可能尝试自己设置session.modified = True而不是触发检测.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读