我有一个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有关吗?为什么那里有单引号和双引号差异?
非常感谢!