如何保存阵列'从QueryDict变量

时间:2014-03-12 10:43:19

标签: python django

我有一个以下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 个答案:

答案 0 :(得分:1)

与传统的dict相比,Django的QueryDict还有一些额外的方法来处理每个键的多个值;对您的目的有用的是:

  

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这样的dict方法总是只返回一个值(该键的最后一个值)。