【问题标题】:Flask session variables disappear when using remote server tunnelling使用远程服务器隧道时,Flask 会话变量消失
【发布时间】:2017-05-07 12:22:58
【问题描述】:

我正在尝试在烧瓶应用程序中使用会话变量,如下所示:

from flask import Flask, session
from flask import request
from flask import render_template
from flask import redirect, url_for

app = Flask(__name__)

app.secret_key = 'verysecretindeed'

@app.route('/')
def myform():
    session['ax'] = 42
    return render_template("test1.html", session=session)

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

    incr = request.form('incr')
    a = session['ax']
    if incr == '1':
         a = a + 1
    session['ax']=a
    return render_template("test1.html", session=session)

if __name__ == '__main__':
    app.run(debug=True)

这段代码在我的本地机器上运行良好。

现在,我在远程服务器上运行代码,并通过以下方式将远程服务器的本地主机连接到我的本地主机:

ssh -N -f -L localhost:5000:localhost:5000 <username>@<server>.blah.edu

现在,当我运行此代码时,在从网页获取“incr”请求后,我得到:

keyerror: 'ax' 在 modifyvalue() 函数中。

当我在 myform() 函数中打印会话时,值就在那里。但是,当我在 modifyvalue() 函数中打印会话时,会话是空的。

我试过设置 APPLICATION_ROOT 像:

app.config['APPLICATION_ROOT']= '/path/to/code/'

我尝试了其他浏览器,隐身,似乎没有任何效果。 我也尝试先在 myform() 中清除会话。我的 app.secret_key 只是一个静态字符串值。

知道可能出了什么问题吗?

【问题讨论】:

    标签: python session flask session-cookies


    【解决方案1】:

    你有两个视图功能,第一个向会话添加一个值,另一个编辑这个值,它们使用相同的 url,所以你可以组合它们。好吧,如果您说我要发布表单,请检查发布方法

    @app.route('/', methods=['GET', 'POST'])
    def home():
        session['ax'] = 42
        if request.method == 'POST':
            incr = request.form('incr')
            a = session['ax']
            if incr == '1':
                a = a + 1
            session['ax'] = a
        return render_template("test1.html", session=session)
    

    【讨论】:

      猜你喜欢
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 2014-05-03
      • 2017-01-01
      • 1970-01-01
      • 2016-01-28
      • 2016-02-13
      相关资源
      最近更新 更多