2014-03-06 92 views
2

我一直在爲過去的一個月構建一個Web應用程序,並且事情已經出人意料地順利地實現了新的我對所有這些。也就是說,直到昨天,當我在頁面上進行AJAX檢修時,才向用戶提供服務器端進程的實時反饋。現在,當我啓動應用程序時,在我的第一行代碼(到目前爲止沒有產生任何問題)中出現錯誤,我檢查會話對象以查看操作是否處於活動狀態。Flask會話變量不允許分配

我收到錯誤:

UnboundLocalError: local variable 'session' referenced before assignment 

當我嘗試代碼:

if 'active_op' not in session: 
    print 'bizbaz' 

我本來以爲我是做錯了這個代碼,如果它沒有無縫工作之前。我已經將我的代碼恢復到了AJAX更新之前的版本,並且仍然出現此錯誤,即使它昨天使用相同的代碼也是如此。任何指針,將不勝感激。正如我所說的,特別是,我對Web應用程序開發和會話仍然很陌生。顯然,我對課程和燒瓶使用這些課程的理解有點偏差,因爲我完全難以理解它爲什麼會突然停止工作。請告訴我是否有任何事情可以澄清我的問題;我被卡住了,直到我弄明白了。謝謝!

編輯: 我有這個代碼試圖分配一個字典到會話變量。

session = {'foo':'bar'} 
+0

你將需要表現出更多的代碼。例如,如果session是一個模塊級別的變量,但是在函數中的任何位置分配它,如果您嘗試在賦值之前讀取它,則會出現此錯誤。 –

+0

謝謝@DanielRoseman。這是問題所在。我做了搜索和替換來清理我的一些代碼,並且我錯過了一個會話被分配給字典的地方。 – SheffDoinWork

+0

我編輯了您的問題,以包含有關「會話分配給字典」的信息。我也將編輯從謝爾蓋的答案,提到這應該完成答案 – codegeek

回答

5

請確保您使用它之前,您導入會議

from flask import session 

編輯

主要的問題是,你分配一個字典的「會話」變量,你不應該做。

# Incorrect 
session = {'foo':'bar'} 

相反,它應該是

session['foo'] = 'bar' 
+0

我做到了。我現在正在修復一個問題;我之前錯過的東西,如果解決了這個問題,我會告訴你。 – SheffDoinWork

+0

沒有運氣。真的不知道是什麼原因造成的。我從前幾天拿出了一些代碼,並且正如預期的那樣,在同一個地方與會話一起工作。 – SheffDoinWork

+0

我正確地認爲會話存在一旦導入,但是,對嗎?在我可以運行這樣的檢查之前,我不需要初始化它或任何東西?這真的讓我覺得它以前工作過,我似乎無法找到任何可以使其表現得像'局部變量'的明顯差異。 – SheffDoinWork