python - 如何在Python(brubeck)中解析表单发布的数据?

标签 python

我的代码是:

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/

相关文章:

python - 如何获得 numpy 数组的最大二维切片?

python - 迭代 xlsx 文件并删除 unicode python openpyxl

python - 查找包含集合中所有值的最短连续子数组的算法

python - 将 Python 从版本 2.7.9 降级到 2.7.8

python - 如何序列化 sympy lambdified 函数?