使用远程服务器隧道时,Flask会话变量会消失

2024-06-16 10:44:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在如下flask应用程序中使用会话变量:

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)

这个代码在我的本地机器上运行得很好。在

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

^{pr2}$

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

keyerror:modifyvalue()函数中的“ax”。在

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

我尝试过将应用程序根设置为:

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

我试过其他浏览器,不认识,似乎没什么用。 我也尝试先在myform()中清除会话。我的app.secret_密钥只是一个静态字符串值。在

知道出什么问题了吗?在


Tags: 函数代码fromimportapp应用程序flasksession
1条回答
网友
1楼 · 发布于 2024-06-16 10:44:24

你有两个视图函数,第一个添加一个值到会话,另一个编辑这个值,它们使用相同的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)

相关问题 更多 >