dict url的dict在Python中为post请求编码了params?

时间:2018-03-02 14:41:00

标签: python http python-requests discourse

params_for_update_cat = {
    'api_key': API_KEY,
    'api_username':"ausername",
    "name": name_and_ticker,
    "color": bg_colour,
    "text_color": text_color,

    "permission": {'admins': 1,'staff': 2}
}


headers = {"Content-Type": "multipart/form-data"}

r = rq.post(url=create_cat_url, data=params, headers=headers)

所以我想要的是,上面肯定不会这样做:

  permissions[admin]=1&permissions[staff]=2 

作为参数列表的一部分。这当然应该在帖子中。

一些警告:

  • api不支持content-type:application / json请求标头。
  • api期望在数据来自表单时发出请求。

如果我在curl中这样做,这是成功测试btw - 它将是:

!curl -X POST "http://<mydomaingoeshere>/categories.json" /

-H "Content-Type: multipart/form-data;" /

-F "api_key=xxxxxxxxx_xxxxx" /
-F "api_username=ausername" /
-F "name=checkcheckcheck" /
-F "text_color=FFFFFF" /
-F "color=49d9e9" /
-F "permissions[admins]=1" /
-F "permissions[staff]=2"

3天 - 并没有人能够提供帮助。也许这样的事情是个坏主意?我不知道。

1 个答案:

答案 0 :(得分:0)

如何在词典中明确表达:

params_for_update_cat = {
    'api_key': API_KEY,
    'api_username':"ausername",
    "name": name_and_ticker,
    "color": bg_colour,
    "text_color": text_color,
    "permissions[admins]": 1,
    "permissions[staff]": 2
}

这会创建一个URL类似的请求:

"http://example.com?...&permissions%5Badmins%5D=1&permissions%5Bstaff%5D=2"