我有一个 django 解析函数:
def parse_org(request):
try:
org = simplejson.loads(request.POST['org'])
except Exception:
traceback.print_exc()
print org
我得到了解码错误。
在客户端,脚本版本(代码粘贴在后面部分)工作正常,但最近我想写一个python版本来做负载测试,所以我在python客户端脚本中编写了以下代码来发送请求:
data_dict = {}
org = ["UCSD", "MIT"]
data_dict["org"] = org
req = urllib2.Request(request_url, urllib.urlencode(data_dict), headers)
response = urllib2.urlopen(req, timeout = 5)
然后 django 站点上的解析代码出现解析错误。我比较了正确的javascript版本和错误的python客户端,唯一的区别是单引号和双引号,django端的错误解析输入是:
POST:<QueryDict: {u'org': [u"['UCSD', 'MIT']"], ....
正确的输入是:
POST:<QueryDict: {u'org': [u'["UCSD","MIT"]'], ....
供您参考,javascript 端看起来像(django 可以正确地将 org 解析为数组):
var org = [];
org.push("UCSD")
org.push("MIT")
var data = {"org": JSON.stringify(org), ...
}
$.post(url, data, function(data){
callback(data);
});
我搜索了很多,但仍然找不到为什么python客户端不能工作,而javascript客户端可以工作。它与urllib的urlencode有关吗?为什么那里有单引号和双引号的区别?
非常感谢!