【发布时间】:2013-12-18 21:39:26
【问题描述】:
我正在尝试获取已发布的 json,并将对象导入 django 数据库。
Json 看起来像:
{
"pooledSets" : [
{
"name" : "Pooled Set 1",
"madeBy" : "John Doe",
"tags" : ['thing1','thing2' ],
"sets" : [
{
"library" : {
"replicate" : 2,
"name" : "My library name",
"referenceGenome" : "hg19-male"
}
]
},
{
"name" : "Pooled Set 1",
"madeBy" : "John Doe",
"tags" : ['thing1','thing2' ],
"sets" : [
{
"library" : {
"replicate" : 2,
"name" : "My library name",
"referenceGenome" : "hg19-male"
}
]
}
]
}
我的代码看起来像:
import json
from django.http import HttpResponse
from piston.handler import BaseHandler
from lab.pooledsets.models import PooledSet
from django.http import QueryDict
class PooledSetJsonHandler(BaseHandler):
allowed_methods = ('POST')
def create(self, request):
for myPooledSet in request.POST.getlist('pooledSets'):
myDict = QueryDict(myPooledSet, 'json')
print myDict
myName = myDict.__getitem__('name')
print myName
运行时,myDict 出来就好了:
<QueryDict: {u"{u'name': u'Pooled Set 1', u'tags': [u\'thing1\', u\'thing2\'], u'sets': etc etc etc
但是我得到了错误:
File "/api/pooled_set_post.py", line 17, in create
myName = myDict.__getitem__('name')
File "/Library/Python/2.6/site-packages/django/utils/datastructures.py", line 258, in __getitem__
raise MultiValueDictKeyError("Key %r not found in %r" % (key, self))
发生了什么,如何提取键值对?
【问题讨论】:
-
顺便说一句,你为什么写
myDict.__getitem__('name')而不是myDict['name']或myDict.get('name')? -
同时,虽然您向我们展示了足够的数据来诊断问题,但您还没有向我们展示足够的数据来修复它。您的输出仅向我们显示了
pooledSets中第一个字典中第一个键的一部分。数据结构显然不应该是由表示 dicts 的 JSON 字符串键入的 dicts 序列……但它应该是什么 就不太明显了。
标签: python django json post request