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

他の誰かがこの質問をする場合に備えて。Hooman はすでに回答を得ていると思います。

動作しません

ビュー.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

このようにセッション オブジェクトにアクセスしようとしても、うまくいきません。

エラー メッセージが示すように、その時点では存在しないrequest contextflask.session内からのみ使用できます。ルート内からのみ使用してください。

于 2013-09-06T17:27:52.140 に答える