You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Werkzeug 3.0中如何对MultiDict进行URL编码?

在Werkzeug 3.0中对MultiDict进行URL编码的正确方式

Werkzeug 3.0移除了原有的url_encode方法,直接使用urllib.parse.urlencode处理MultiDict时,会丢失多值键的后续值(比如示例中本该生成a=1&a=2,结果只输出a=1)。这里提供两种可行的解决方法:

方法一:利用MultiDict的lists()方法配合doseq=True

MultiDict.lists()会将每个键对应的所有值整理为列表,再通过urlencode的doseq=True参数,把列表中的每个值生成为独立的键值对:

from werkzeug.datastructures import MultiDict
from urllib.parse import urlencode

d = MultiDict([('a', '1'), ('a', '2')])
encoded_str = urlencode(d.lists(), doseq=True)
print(encoded_str)  # 输出: a=1&a=2

方法二:直接遍历MultiDict的所有键值对

MultiDict.items()会返回包含所有重复键的键值对迭代器,将其转换为列表后传给urlencode即可:

from werkzeug.datastructures import MultiDict
from urllib.parse import urlencode

d = MultiDict([('a', '1'), ('a', '2')])
encoded_str = urlencode(list(d.items()))
print(encoded_str)  # 输出: a=1&a=2

两种方法都能生成符合x-www-form-urlencoded格式的字符串,与原Werkzeug url_encode的行为一致。

内容的提问来源于stack exchange,提问作者neurino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:00:00