Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask:登录会话超时太快_Python_Session_Flask_Flask Login - Fatal编程技术网

Python Flask:登录会话超时太快

Python Flask:登录会话超时太快,python,session,flask,flask-login,Python,Session,Flask,Flask Login,在编辑记录时,如果有很长的等待时间,比如说几分钟(喝咖啡),然后回来按保存(POST),我会被重定向到主页登录,数据会丢失 flask登录会话似乎过期太快 我做了一些研究,发现了这个 from flask import session, app session.permanent = True 这是正确的方式吗?但即使我尝试了这一点,我也会得到一个例外: File "/Users/kave/workspace/F11A/src/application/__init__.py", line

在编辑记录时,如果有很长的等待时间,比如说几分钟(喝咖啡),然后回来按保存(POST),我会被重定向到主页登录,数据会丢失

flask登录会话似乎过期太快

我做了一些研究,发现了这个

from flask import session, app

session.permanent = True
这是正确的方式吗?但即使我尝试了这一点,我也会得到一个例外:

  File "/Users/kave/workspace/F11A/src/application/__init__.py", line 14, in <module>
    session.permanent = True
  File "/Users/kave/workspace/F11A/src/lib/werkzeug/local.py", line 355, in <lambda>
    __setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v)
  File "/Users/kave/workspace/F11A/src/lib/werkzeug/local.py", line 297, in _get_current_object
    return self.__local()
  File "/Users/kave/workspace/F11A/src/lib/flask/globals.py", line 20, in _lookup_req_object
    raise RuntimeError('working outside of request context')
RuntimeError: working outside of request context
File”/Users/kave/workspace/F11A/src/application/_init__.py“,第14行,在
session.permanent=True
文件“/Users/kave/workspace/F11A/src/lib/werkzeug/local.py”,第355行,在
__setattr\uuuu=lambda x,n,v:setattr(x.\u获取当前\u对象(),n,v)
文件“/Users/kave/workspace/F11A/src/lib/werkzeug/local.py”,第297行,在当前对象中
返回self.\uuu local()
文件“/Users/kave/workspace/F11A/src/lib/flask/globals.py”,第20行,在查找请求对象中
引发运行时错误('在请求上下文之外工作')
运行时错误:在请求上下文之外工作

如果您尝试这样访问会话对象,它将无法工作


正如错误消息所说,
flask.session
只能从中使用,而此时不存在。您只能在路线内使用它。

以防万一其他人会有这个问题。我想胡曼已经得到答案了

不起作用

from flask import session
from datetime import timedelta

@app.route('/home', methods=['GET', 'POST'])
def show_work():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=30)
    form = MyForm(request.form)
    return render_template('home.html', form = form)
views.py

from flask import session
from datetime import timedelta

session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=30) 
将起作用

from flask import session
from datetime import timedelta

@app.route('/home', methods=['GET', 'POST'])
def show_work():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=30)
    form = MyForm(request.form)
    return render_template('home.html', form = form)

会话
必须在请求中使用。

您使用的烧瓶版本是什么?版本0.10。我刚升级到0.10.1.ok。我这样问是因为在最新的0.10版本中,对会话进行了一些更改,包括添加了会话\刷新\每个\请求配置标志,这可能是问题所在,也可能是问题所在。此外,处理会话的请求上下文也已更改。能否检查会话\u刷新\u每个\u请求配置标志的值?似乎当您点击“后退”按钮时,它可能是一个新请求,然后刷新会话?
session\u REFRESH\u每个请求当前不在my setting.py中。我必须显式地将其设置为
False
吗?我想是的。试一试,这是正确的答案。将与会话相关的代码移动到视图中,不要将其放在其他位置,因为在“请求”之外没有会话的概念。