4 回答

TA贡献1826条经验 获得超6个赞
Couch参数值是JSON文字,因此应通过对值进行JSON编码来创建。然后,您还需要对该结果进行URL编码以适合标准URL。
例子:
import urllib, json
def to_json_query(params):
return urllib.urlencode({p: json.dumps(params[p]) for p in params})
>>> qs = to_json_query({'descending': True, 'startkey': 'Mexico', 'endkey': 'Mexico'})
'startkey=%22Mexico%22&endkey=%22Mexico%22&descending=%22true%22'
请注意,我已经改变的值descending是一个布尔值True,只要你想一个JSON布尔值true,而不是字符串"true"。
(这里的现有答案假定为字符串,并且不进行URL编码或JSON编码,因此,对于任何JSON特殊或URL特殊字符,任何非ASCII或非字符串数据类型,都将失败。)

TA贡献2039条经验 获得超7个赞
params = {'descending': 'true', 'startkey': 'Mexico', 'endkey': 'Mexico'}
pairs = ['{}="{}"'.format(k,v) for k,v in params.items()]
print '&'.join(pairs);
--output:--
startkey="Mexico"&endkey="Mexico"&descending="true"
如果您不希望引用true,则在for循环中执行相同的操作,并且不要引用true。
查询字符串中不允许使用双引号,因此最好使用:
pairs = ['{}=%22{}%22'.format(k,v) for k,v in params.items()]
添加回答
举报