增强型表单数据序列化实用工具

requests_toolbelt.utils.formdata.urlencode(query, *args, **kwargs)

处理嵌套表单数据查询并适当地对其进行序列化。

有时,网站希望发送嵌套表单数据查询,但标准库的 urlencode 函数无法适当地处理嵌套结构。在这种情况下,您需要此函数,它将首先使结构扁平化,然后为您正确对其进行编码。

在使用此函数发送请求正文中的数据时,请确保为请求指定适当的 Content-Type 标头。

import requests
from requests_toolbelt.utils import formdata

query = {
   'my_dict': {
       'foo': 'bar',
       'biz': 'baz",
    },
    'a': 'b',
}

resp = requests.get(url, params=formdata.urlencode(query))
# or
resp = requests.post(
    url,
    data=formdata.urlencode(query),
    headers={
        'Content-Type': 'application/x-www-form-urlencoded'
    },
)

同样,您可以指定嵌套元组列表,例如,

import requests
from requests_toolbelt.utils import formdata

query = [
    ('my_list', [
        ('foo', 'bar'),
        ('biz', 'baz'),
    ]),
    ('a', 'b'),
]

resp = requests.get(url, params=formdata.urlencode(query))
# or
resp = requests.post(
    url,
    data=formdata.urlencode(query),
    headers={
        'Content-Type': 'application/x-www-form-urlencoded'
    },
)

有关其他参数和返回信息,请参阅官方 urlencode 文档。