2017-06-19 27 views
2

作爲earlier question的後續行動,我想知道如何使用flask.g和flask.session將字典從一個def轉移到另一個def。如果我正確理解g,它只會臨時存儲信息,直到發出新的請求。由於def我想將dict對象轉移到,開始一個新的請求(它加載一個新的燒瓶模板),我想我不能使用g。所以,這讓我想知道我是否可以使用flask.session做到這一點。如果我試圖按照以下方式保存我的字典:session.dict,然後嘗試在新的def中使用此字典,它會返回「AttributeError:'FileSystemSession'對象沒有屬性'字典'。在燒瓶會話字典的保存是在所有可能的?如果是的話,我究竟做錯了什麼?使用燒瓶會話來存儲字典

RGDS, 巴特在燒瓶

+0

如果將它寫入會話字典會怎麼樣? 'session ['dict'] = somedict'?然後用session.get('dict',fallbackvalue)''檢索它。請注意,用戶(故意)在嘗試查找漏洞利用時交換頁面請求也是可能的。 –

+0

嗯,如果我這樣做了,我會在下一個def中出現一個KeyError,我試圖循環session ['dict'] .... :( –

+0

哦,對不起Willem,我忘了使用「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的詞典,它也有方便[方法](https://docs.python.org/3/library/stdtypes.html#dict )可以使用'.get(key [,default_val])'和'.pop(key [,default_val])'接受第二個,可選的(默認爲'None')參數作爲默認值。如果沒有找到這樣的密鑰,[key]'上升'KeyError'。) –