2012-07-13 28 views
0

我的GAE Python應用程序有一種稱爲「用戶」的種類,具有各種自定義字段。最近,當我的應用程序在一夜之間沒有任何活動時,我會在第二天早上嘗試登錄時收到錯誤消息。GAE「用戶」類取代自己的「用戶」類?

在登錄過程中,我得到一個ID(來自Facebook),這是KEY_NAME在數據存儲實體:

user = User.get_by_key_name(id_from_facebook) 
    logging.debug(user.favorite_color) 

因爲實體返回實際上是從谷歌圖書館的一些類這將導致一個錯誤,因此沒有字段「favorite_color」。然而,越來越從數據存儲「東西」,所以我檢查對象的內容:

for key in user.__dict__.keys(): 
     log.debug("%s: %s" % (key, user.__dict__[key])) 

這說明,不是我的「用戶」的那種,像「_first_name」,「_last_name」鍵,和「_電子郵件」。

我也嘗試從方法裏面的「myapp.models」中導入我的類,而不是在文件的頂部,但沒有任何改變。一旦我關閉GAE上運行的實例並再次訪問我的應用程序來啓動一個新實例,它就會正常工作。

我唯一的線索是我聽說我的應用程序導入和GAE導入的內容之間存在差異,但沒有別的。除了將我的所有用戶複製到新的獨特類型(如「MyUser」)之外,還有什麼可以做的嗎?

編輯:

我發現不需要類實際上是從凱框架,這也是在我的項目「用戶」。但是,我不會在我的代碼中的任何位置導入該類,特別是不在發生錯誤的模塊中。

回答

0

您可能正在從google.appengine.api.users導入User類。

幸運的是,Python使這種事情容易追蹤,因爲導入是明確的。只需在模塊頂部檢查導入行,並確定該對象來自哪裏。

+0

謝謝你的迴應!其實,這就是我一開始所懷疑的,但正如我在編輯中提到的那樣,它實際上來自我正在使用的另一個框架。儘管如此,我**已經檢查了我的進口產品,而且我沒有進口任何其他產品,只有我自己的用戶。 – 2012-07-25 06:03:21

+0

@ mezzanine.ak您是否在使用「from blah import *」?如果你是,並且你正在做的導入用戶本身的模塊之一,你將會傳遞導入對象。這是避免「導入*」的一個很好的理由。 – 2012-07-26 05:31:24

+0

我會研究一下......這是關於我能想到的唯一的其他事情。謝謝你的建議。 – 2012-07-31 06:00:59