解析的问题使django中的json post数据复杂化

时间:2012-09-03 04:13:01

标签: django urllib2 simplejson

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

非常感谢!

0 个答案:

没有答案