2011-09-30 55 views
1

我用我的服务器程序下面的代码:获取输入从PUT方法Web.py

class AddLibSong: 
    def PUT(self): 
    db = MahData.getDBConnection() 
    songs = json.loads(web.input().to_add) 
    addToLibrary(songs) 
    return 

但由于某些原因,当我做的数据PUT:

"to_add=[ { "album" : "Unknonwn", "artist" : "Unknonwn", "host_lib_id" : "1", "is_deleted" : 
"false", "server_lib_id" : "-1", "song" : "Moneytalks" } ]" 

我得到以下错误:

Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/application.py", line 237, in process 
    return self.handle() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/application.py", line 228, in handle 
    return self._delegate(fn, self.fvars, args) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/application.py", line 409, in _delegate 
    return handle_class(cls) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/application.py", line 385, in handle_class 
    return tocall(*args) 
    File "/Users/kurtis/sandbox/udj/webserver/Library.py", line 114, in PUT 
    song = json.loads(web.input().to_add) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/utils.py", line 76, in __getattr__ 
    raise AttributeError, k 
AttributeError: 'to_add' 

127.0.0.1:51096 - - [29/Sep/2011 19:02:58] "HTTP/1.1 PUT /add_songs_to_library" - 500 Internal Server Error 

任何人都知道这是为什么?我认为我看到了一些关于Web.py的内容,只有在给定POST或GET的情况下才能够获得输入,但是在源代码中没有看到任何应该阻止这一点的内容。

+0

通常REST服务接听PUT应该说比HTTP响应代码200更很少在你的情况,请求失败可能是为了回应一些不正确的值; JSON表示一个元素的数组,一个包含键和值的对象。我希望这有助于 – mozillanerd

+0

因此,我发布了一条不正确的错误消息。我解决了这个问题。你会发现问题现在是一个AttributeError。 –

+0

只是试图将其从PUT更改为POST,现在一切正常。为什么我无法获得PUT请求的输入? –

回答

1

无论如何,如果你想要更多的细节如何使用PUT与WebPy我会建议你this伟大的链接。

,使其处于webpy你应该改变“主”代码到上一个版本的工作:

if __name__ == "__main__": 

    app=web.application(urls, globals()) 
    app.run()