2012-08-02 75 views
1

所以我試圖創建一個系統來索引搜索數據庫中的用戶,但金字塔和請求庫讓我失望。這是搞亂了一段代碼:金字塔和python的請求庫之間的奇怪行爲

requests.put('http://localhost:9200/master/user/%s' % str(session.query(User).filter(User.username == request.params['username']).first().user_id) 
, data = '{"name" : %s, "reputation" : 0, "username" : %s}' % (str(request.params['name']), str(request.params['username'])) 

它工作在Python解釋器很好,但在視圖中,它使返回400個狀態。我在這行代碼之前運行session.flush()。我無法弄清楚發生了什麼問題。

+0

正如你可以在J.F. Sebastian的代碼示例中看到的,你在同一行中放置了太多的代碼。這使得它很難調試。傳播這個使用變量。然後你可以登錄/打印東西來幫助調試。 – 2012-08-02 13:14:46

+0

另外,請注意,您的JSON將無效,因爲您未在「%s」周圍添加引號。同樣,像J.F. Sebastian所表明的那樣,您應該使用json.dumps來確保您創建有效的JSON。 – 2012-08-02 13:16:17

回答

5
user = session.query(User).filter_by(username=request.params['username']).first() 
if user is None: 
    "not found" # do whatever appropriate in your case e.g., return 404 

headers = {'content-type': 'application/json'} 
requests.put('http://localhost:9200/master/user/{userid}'.format(user.user_id), 
      data=json.dumps(dict(name=request.params['name'], reputation=0, 
            username=request.params['username'])), 
      headers=headers) 
+0

非常感謝你!我一直在拉我的頭髮。 – Wiz 2012-08-02 15:22:49