6

在编辑记录时,如果等待几分钟(喝咖啡)然后回来按保存(POST),我会被重定向到主页登录而不是数据丢失。

烧瓶登录会话似乎过期得太快了。

我做了一些研究并遇到了这个。

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
4

2 回答 2

6

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

不会工作

视图.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)

session必须在请求中使用。

于 2014-05-15T14:55:53.397 回答
2

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

正如错误消息所说,flask.session只能在请求上下文中使用,此时不存在。您应该只在路线内使用它。

于 2013-09-06T17:27:52.140 回答