3 回答

TA貢獻1876條經驗 獲得超5個贊
經過一段時間的調試器,我終于解決了這個問題。
關鍵問題是我試圖_id將MongoDB集合中的參數用作用戶ID。我沒有意識到_id參數是一種ObjectID類型,而不是我需要的字符串或unicode。
def find_by_username(username):
try:
data = app.mongo.db.users.find_one_or_404({'username': username})
user = User(unicode(data['_id']), data['username'], data['password'])
return user
except HTTPException:
return None
def find_by_id(userid):
try:
data = app.mongo.db.users.find_one_or_404({'_id': ObjectId(userid)})
user = User(unicode(data['_id']), data['username'], data['password'])
return user
修改兩個函數適當地修復了此錯誤。

TA貢獻1829條經驗 獲得超7個贊
如果您已驗證它不是您的login_user
功能,那么就離開您的find_by_id
功能。
的源代碼為user_loader
:
您設置的函數應帶有用戶ID(a
unicode
)并返回用戶對象,或者None
如果用戶不存在。
您的find_by_id
功能使用find_one_or_404
會引起注意。我將對該函數添加一些額外的調試,添加一些打印信息或進行日志記錄,以顯示使用正確的unicode id調用了該函數,并且該函數返回了一個User
對象或None
。
希望這可以使您更進一步地縮小問題的范圍。
添加回答
舉報