我的代码是:
class GameSession(JSONMessageHandler, UserHandlingMixin):
@allow_all
def post(self):
s = self.s = Session()
payload = self.message.body
# payload = json.loads(payload)
print 'payload start'
print payload
print 'payload end'
current_gamesession = self.check_gamesession(payload.prize_id,
payload.publisher_id)
我看到的是:
payload start
prize_id=2&publisher_id=32&foreign_user_id=1234
payload end
ERROR:root:'str' object has no attribute 'prize_id'
Traceback (most recent call last):
File "/home/vagrant/src/brubeck/brubeck/request_handling.py", line 338, in __call__
rendered = fun(*self._url_args)
File "/vagrant/mysite/api/views.py", line 31, in wrapper
return func(self, *args, **kwargs)
File "/vagrant/mysite/api/views.py", line 629, in post
如何获取表单数据?
** 编辑 **
顺便说一句,如果我使用 x-www-form-urlencoded 发送数据的话。如果我作为 form-data
发送,我会得到:
payload start
------WebKitFormBoundaryFX1GuivvAA42T3uk
Content-Disposition: form-data; name="prize_id"
2
------WebKitFormBoundaryFX1GuivvAA42T3uk
Content-Disposition: form-data; name="publisher_id"
1
------WebKitFormBoundaryFX1GuivvAA42T3uk
Content-Disposition: form-data; name="foreign_user_id"
2321
------WebKitFormBoundaryFX1GuivvAA42T3uk--
payload end
最佳答案
传统上,您会创建一个 cgi.FieldStorage
对象,该对象读取 stdin(通常 - 有关于它的作用和时间的 CGI 标准)。如今这已经有点过时了。 Urlparse.parse_qs
旨在将表单数据转换为字典:
>>> import urlparse
>>> urlparse.parse_qs("prize_id=2&publisher_id=32&foreign_user_id=1234")
{'prize_id': ['2'], 'foreign_user_id': ['1234'], 'publisher_id': ['32']}
>>>
关于python - 如何在Python(brubeck)中解析表单发布的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176337/