简体   繁体   English

如何解析通过 POST 收到的 URL 编码数据

[英]How to parse URL encoded data recieved via POST

I'm writing a django webhook for a service that send data via POST that is URL encoded.我正在为通过 URL 编码的POST发送数据的服务编写一个 django webhook。 Example POST show below:示例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

I understand how to parse json but I haven't encountered this format before.我知道如何解析json ,但我以前没有遇到过这种格式。 There doesn't appear to be any useful tutorials for how to handle this via POST .关于如何通过POST处理这个问题,似乎没有任何有用的教程。 I'm stuck at this point so help would be greatly appreciated.我被困在这一点上,所以帮助将不胜感激。

Python 2:蟒蛇2:

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

Python 3:蟒蛇3:

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

Both python 2/3:都是 python 2/3:

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

UPD更新程序

There is also parse_qsl function that returns a list of two-items tuples, like还有一个parse_qsl函数返回一个包含两项元组的列表,比如

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

It is very suitable to passing such list to dict() constructor, meaning that you got a dict with only one value per name.将这样的列表传递给dict()构造函数非常合适,这意味着您得到一个每个名称只有一个值的字典。 Note that the last name/value pair takes precedence over early occurrences of same name (see dict in library reference).请注意,最后的名称/值对优先于早期出现的相同名称(请参阅库参考中的字典)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM