【问题标题】:Getting the input from a PUT method in Web.py从 Web.py 中的 PUT 方法获取输入
【发布时间】:2011-09-30 00:11:21
【问题描述】:

我在我的服务器程序中使用以下代码:

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 时才能获得输入,但我在源代码中没有看到任何应该阻止这种情况的内容。

【问题讨论】:

  • 通常,响应 PUT 的 REST 服务应该只说 HTTP 响应代码 200。在您的情况下,请求失败可能是因为响应了一些不正确的值; JSON 表示一个具有一个元素的数组,一个具有键和值的对象。我希望这会有所帮助
  • 原来我发布了一条不正确的错误消息。我已经解决了这个问题。您现在会看到问题出在 AttributeError 上。
  • 刚刚尝试将其从 PUT 更改为 POST,现在一切正常。为什么我无法获得 PUT 请求的输入?

标签: http web.py put


【解决方案1】:

无论如何,如果您想了解有关如何将 PUT 与 WebPy 一起使用的更多详细信息,我会建议您 this 很好的链接。

要使其在最新版本的 webpy 上运行,您应该将“主”代码更改为:

if __name__ == "__main__":

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多