如何将'数组'从QueryDict保存到变量中
我有一个这样的QueryDict结构:
QueryDict: {u'tab[1][val1]': [u'val1'], u'tab[1][val2]': [u'val2'], u'tab[0][val1]': [u'val1'], u'tab[1][val2]': [u'val2']}
我想把它存储在一个可以遍历的变量里,这样我就可以像这样使用:
for x in xs:
do_something(x.get('val1'))
其中x就是tab[0]等等。
我尝试过:
dict(request.POST._iteritems())
但它返回的不是tab[0],而是tab[0][val1]作为一个元素。
有没有办法把整个tab[idx]存储在一个变量里?
1 个回答
1
Django的QueryDict相比于传统的dict
,有一些额外的方法来处理每个键对应多个值的情况。对你来说,比较有用的方法有:
QueryDict.iterlists()
这个方法和QueryDict.iteritems()
类似,但它会把字典中每个成员的所有值都以列表的形式返回。
QueryDict.getlist(key, default)
这个方法会返回你请求的键对应的数据,以Python列表的形式。如果这个键不存在,并且你没有提供默认值,它会返回一个空列表。只要默认值不是列表,它一定会返回某种形式的列表。
QueryDict.lists()
这个方法和items()类似,但它会把字典中每个成员的所有值都以列表的形式返回。
所以你可以这样做:
qd = QueryDict(...)
for values in qd.lists():
for value in values:
do_something(value)
另外要注意,像get
这样的“正常”字典方法总是只返回一个单一的值(即该键的最后一个值)。