问题与以下无关urlencode
; Python 字典不能保存同一个键的多个值。你可以通过以下方式看到这个print
ing out forms
在发送之前——那里只有一个值selected_items[]
。该值可以很好地编码。
As 文档 http://docs.python.org/2/library/urllib.html#urllib.urlencode解释说,有两种方法可以解决这个问题。
首先,您可以将一系列值附加到一个键,然后使用doseq=True
flag:
forms = {"_ref_ck": ref,
"type": "create",
"selected_items[]": sel_itms[:10]
}
data = urllib.urlencode(forms, doseq=True)
或者,您可以传递二元素元组序列而不是映射:
forms = (("_ref_ck", ref),
("type", "create"),
("selected_items[]", sel_itms[0]),
("selected_items[]", sel_itms[1]),
# ...
)
data = urllib.urlencode(forms)
(您也可以使用自定义Mapping
允许重复键的类型,而不是标准的dict
,但这可能有点过分了。特别是因为构建这种自定义的通常方法Mapping
类型是通过向其传递一系列键值对......)