2017-06-19 7 views
2

earlier questionのフォローアップとして、flask.gとflask.sessionを使ってある辞書から別の辞書に辞書を転送する方法を知りました。 gが正しく理解されていれば、新しいリクエストまで情報を一時的に保存するだけです。私はdictオブジェクトを転送したいので、新しい要求(新しいフラスコテンプレートをロードします)から始めて、私はgを使うことはできません。だから、これは私にフラスコ・セッションを使用できるかどうか疑問に思う。次のように私の辞書を保存しようとすると:session.dict、そして、このdefを新しいdefで使用しようとすると、 "AttributeError: 'FileSystemSession'オブジェクトに 'dict'属性がありません。フラスコセッションを使って辞書を保存する

フラスコのセッションで辞書の節約が可能なすべてであるか、そしてもしそうなら、私は間違って何をやっている?

RGDSを、フラスコ内の バート

+0

セッションディクショナリに書き込むとどうなりますか? 'session ['dict'] = somedict'?後で 'session.get( 'dict'、fallbackvalue)'でそれを取得します。エクスプロイトを見つけようとしているときに、ユーザーが(意図的に)ページリクエストを交換する可能性もあることを覚えておいてください。 –

+0

ええと、私がそれをすると、セッション['dict']をループしようとする次のdefでKeyErrorが発生します....( –

+0

ああ、申し訳ありませんウィレム、私は "get"ステートメントを忘れてしまいました! –

答えて

3

セッションが辞書です。あなたが何かを保存する必要がある場合にセッションではこれを行うことができます:

from flask import session 
... 

def foo(...): 

    session['my_dict'] = my_dict 


def bar(...): 

    my_dict = session['my_dict'] 

ご使用になる前に、my_dictがセッション中に存在するかどうかを確認する必要があります。

+0

ありがとうございます、 –

+0

@BartKoolhaas、あなたも大丈夫です – Nurjan

+0

'session'はPythonの辞書なので、便利な[methods](https://docs.python.org/3/library/stdtypes.html#dict)もあります。デフォルト値として機能する2番目のオプション(デフォルトは 'None')引数を受け入れる' .get(key [、default_val]) 'と' .pop(key [、default_val]) 'そのようなキーが見つからない場合、[key] 'は' KeyError'を発生します。 –

関連する問題