Yiğ*_*ler 4 python django urllib urlencode
我有一个具有多个选择字段的表单.它正在通过GET方法.表单生成的请求参数示例:
action=not-strummed&action=not-rewarded&keywords=test&page=2
Run Code Online (Sandbox Code Playgroud)
请注意,有两个"动作"参数.这是因为多重选择而发生的.
我想做的是:
该urllib.urlencode()是没有足够的智慧来从列表中的网址参数.
例如:
{
"action": [u"not-strummed", u"not-rewarded"]
}
Run Code Online (Sandbox Code Playgroud)
urllib.urlencode()将此dict转换为:
action=%5Bu%27not-strummed%27%2C+u%27not-rewarded%27%5D
Run Code Online (Sandbox Code Playgroud)
这是完全错误和无用的.
这就是为什么我写这个迭代代码来重新生成url参数.
Run Code Online (Sandbox Code Playgroud)parameters_dict = dict(self.request.GET.iterlists()) parameters_dict.pop("page", None) pagination_parameters = "" for key, value_list in parameters_dict.iteritems(): for value in value_list: pagination_item = "&%(key)s=%(value)s" % ({ "key": key, "value": value, }) pagination_parameters += pagination_item
它运作良好.但它并没有涵盖所有可能性,它绝对不是非常pythonic.
从列表中创建url参数有没有更好(更pythonic)的想法?
谢谢
Tay*_*nce 13
您应该能够使用urlencode提供的第二个doseq参数:
http://docs.python.org/2/library/urllib.html
基本上,您可以将列表字典传递给urlencode,如下所示:
urllib.urlencode(params, True)
Run Code Online (Sandbox Code Playgroud)
它会做正确的事情.
| 归档时间: |
|
| 查看次数: |
5460 次 |
| 最近记录: |