2012-08-02 83 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