如何解析通过POST接收的application/x-www-form-urlencoded

2024-04-27 15:46:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个通过POST发送数据的服务编写django webhook,我认为是application/x-www-form-urlencoded格式。示例POST如下所示:

POST id=a5f3ca18-2935-11e7-ad46-08002720e7b4
 &originator=1123456789
 &recipient=1987654321
 &subject=MMS+reply
 &body=View+our+logo
 &mediaUrls[0]=https://storage.googleapis.com/mms-assets/20170424/a0b40b77-30f8-4603-adf1-00be9321885b-messagebird.png
 &mediaContentTypes[0]=image/png
 &createdDatetime=2017-04-24T20:15:30+00:00

我知道如何解析json,但以前从未遇到过这种格式。对于如何通过POST处理此问题,似乎没有任何有用的教程。我被困在这一点上,所以非常感谢你的帮助。


Tags: djangoformid示例applicationpngwww格式
1条回答
网友
1楼 · 发布于 2024-04-27 15:46:24

Python2:

>>> from urlparse import parse_qs
>>> parse_qs('foo=spam&bar=answer&bar=42')
{'foo': ['spam'], 'bar': ['answer', '42']}

Python3:

>>> from urllib.parse import parse_qs
>>> parse_qs('foo=spam&bar=answer&bar=42')
{'foo': ['spam'], 'bar': ['answer', '42']}

Python2/3:

>>> from six.moves.urllib.parse import parse_qs

升级版

还有一个parse_qsl函数返回两个items元组的列表,如

>>> parse_qsl('foo=spam&bar=answer&bar=42')
[('foo', 'spam'), ('bar', 'answer'), ('bar', '42')]

将这样的列表传递给dict()构造函数非常合适,这意味着您得到的dict每个名称只有一个值。请注意,姓氏/值对优先于早期出现的同名项(请参见库引用中的dict)。

相关问题 更多 >