无法访问帖子传递的数组

时间:2019-07-03 13:31:25

标签: django

我正在处理将数据传递(通过发布)到视图的表单。 从视图中,如果我打印了整个request.POST对象,我将得到:

<QueryDict: {'csrfmiddlewaretoken': ['<omitted>'], 'doctype-name': ['a7'], 'doctype-validita': ['1'], 'projects': ['1', '2']}>

如果我尝试读取或打印request.POST ['projects']我只会得到最后一个值 即2

1 个答案:

答案 0 :(得分:0)

QueryDict是一种类似于字典的集合,因此只能返回一个元素,因为否则它就不会(完全)遵守字典协定。

您可以在此处使用QueryDict.getlist(..) method [Django-doc]

request.POST.getlist('projects')  # returns ['1', '2']

如文档所述:

  

QueryDict.getlist(key, default=None)

     

返回带有请求的key 的数据的列表。如果key不存在且未提供default值,则返回空列表。除非提供的default值不是列表,否则保证返回列表。

它返回最后一个值的事实是documented as well

  

QueryDict.__getitem__(key)

     

返回给定key的值。如果 key具有多个值,则返回最后一个值。如果django.utils.datastructures.MultiValueDictKeyError不存在,则引发key。 (这是Python标准KeyError的子类,因此您可以坚持使用KeyError。)