更改会话变量值失败

时间:2015-07-12 16:06:24

标签: python session flask

编辑:实际上,我可以看到会话变量的值发生了变化,但在下次调用该函数时,该值被设置回0

我是Flask初学者,我在更改会话变量的值时遇到问题。以下是我的代码的摘录: 在第一轮评论后编辑

0)我在config.py中设置了SECRET_KEY变量。

1)当用户登录时,我设置了一个会话变量:

@app.route('/login', methods=['GET', 'POST'])
def login():
    session['info_released'] = 0
    app.logger.debug('info_released session value: {}'.format(session['info_released'])
    ...

检查日志,会话变量的值正确设置为0。

2)我有一个counter变量通过request.json传递,该变量会不时增加。在一个counter增量和下一个增量之间,我多次检查以下条件(通过ajax调用):

@app.route('/get_actual_demand', methods=['GET', 'POST'])
def get_actual_demand():

    app.logger.info('> SESSION: {}'.format(session['info_released']))
    if request.json['counter'] == 10 and session['info_released'] == 0:
        #code
        session['info_released'] = 1
        app.logger.info('> SESSION VAR. AFTER CHANGE: {}'.format(session['info_released']))
        return jsonify(released=1)
    else:
        return jsonify(released=0)

也就是说,当counter == 10我多次检查条件但是我只想运行#code一次(第一次counter == 10和会话变量为0)。

编辑:检查日志,session['info_released']counter == 10时更改为1,但在下一次调用中,该值将重新设置为0:确实,{ {1}}运行多次,直到#code递增为止。

我无法理解我做错了什么。我可能也有更好的组织程序流程,但我认为这与我遇到的问题无关。

编辑:似乎我对counter视图功能中的会话变量所做的一切只是“本地”。我更改了代码如下,从get_actual_demand()函数中删除了session['info_released'] = 0

login()

检查日志(从代码中删除)我可以看到第一次遇到异常时定义的会话变量,但是再次点击异常就好像会话变量仍然不存在一样。

我认为我的配置中缺少某些内容,但我无法在文档中找到提示。我的config.py如下:

@app.route('/get_actual_demand', methods=['GET', 'POST'])
def get_actual_demand():
    # the variable session['info_released'] is no more
    # defined in the login() function

    if request.json['counter'] == 10:
        try:
            # The first time I get here, raise a KeyError exception
            if session['info_released'] == 1:
                return jsonify(released=0)
        except KeyError:
            # Use `session['info_released']` as a flag,
            # defined here
            session['info_released'] = 1
            return jsonify(released=1)
    else:
        return jsonify(released=0)

0 个答案:

没有答案