python postdata list只给出multiplecheckbox的最后一个值

时间:2014-06-01 15:32:31

标签: python post checkbox

我制作了一个包含多个复选框(已分组)的表单,当发布此数据时,它看起来像:

<QueryDict: {u'action': [u'delete'], u'mails': [u'1', u'2']}>

但现在当我尝试访问“邮件”中的数据时,我只得到最后的结果: (postdata是我的Querydict)

def mail_action(postdata, character):
    if postdata['action'] == "delete":
        for mail in postdata['mails']:
            print mail

我用它只打印“2”

我需要做些什么才能获得整个“邮件”列表?

1 个答案:

答案 0 :(得分:1)

根据Django QueryDict.__getitem__(key)的文档,它说&#34;如果密钥有多个值,__getitem__()将返回最后一个值。&#34;所以你所看到的行为是有目的的。

要获取所有值,请尝试使用QueryDict.getlist(key, default)&#34;返回带有请求密钥的数据,作为Python列表。如果密钥不存在且未提供默认值,则返回空列表。除非默认值不是列表,否则保证返回某种列表。&#34;

所以,你的代码可以是:

def mail_action(postdata, character):
    if postdata['action'] == "delete":
        for mail in postdata.getlist('mails'):
            print mail