我的问题是,我必须对dict进行编码才能设计couchdb:
我有一句话:
params = {'descending': 'true', 'startkey': 'Mexico', 'endkey': 'Mexico'}
我想要这样的网址:
^{pr2}$或者像这样:
http://localhost:5984/hello-world/_design/precios/_view/precios?descending=true&startkey="Mexico"&endkey="Mexico"
因此,我使用urllib.urlencode
将dict转换为查询字符串:
urllib.urlencode(params)
这个给我的回复是:
http://localhost:5984/hello-world/_design/precios/_view/precios?descending=true&startkey=Mexico&endkey=Mexico
所以这是CouchDB的无效URL,因为CouchDB需要startkey
和endkey
中的双引号
如果我把口述改成:
params = {'descending': 'true', 'startkey': '"Mexico"', 'endkey': '"Mexico"'}
这个返回一个有效的URL,如下所示:
^{pr2}$但是我不想在单引号内传递双引号,有没有一种方法可以返回一个有效的URL?在
谢谢你的回答:D
我建议您编写自己的urlencode函数。下面是一个基本示例:
如果你不想让true被引用,那么在for循环中做同样的事情,不要引用true。在
查询字符串中不允许使用双引号,因此最好使用:
^{pr2}$Couch参数值是JSON文本,因此应该通过JSON编码值来创建。然后您还需要对结果进行URL编码,以适应标准URL。在
示例:
注意,我已经将}。在
descending
的值改为一个booleanTrue
,因为您需要一个JSON booleantrue
,而不是字符串{(这里现有的答案假设字符串,而不是URL encode或JSON encode,因此对于任何JSON特殊字符或URL特殊字符、任何非ASCII或非字符串数据类型,都将失败。)
相关问题 更多 >
编程相关推荐