Django 无法访问post传递的数组

Django 无法访问post传递的数组,django,Django,我正在处理一个表单,它(通过post)将数据传递给一个视图。 从视图中,如果我打印整个request.POST对象,我会得到: <QueryDict: {'csrfmiddlewaretoken': ['<omitted>'], 'doctype-name': ['a7'], 'doctype-validita': ['1'], 'projects': ['1', '2']}> 如果我尝试读取或打印request.POST['projects'],我只会得到最后一个

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

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

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

A
QueryDict
是一个类似字典的集合,因此只能返回一个元素,否则它(完全)不遵守字典契约

您可以在此处使用:

request.POST.getlist('projects')#返回['1','2']
正如文件所说:

QueryDict.getlist(键,默认值=None)

使用请求的
键返回数据的列表。如果
键不存在且未提供
默认值,则返回空列表。除非提供的
默认值不是列表,否则保证返回列表

它返回最后一个值的事实是:

QueryDict.\uuu获取项目\uuuuuuu(键)

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


非常感谢。有什么理由不总是使用getlist吗?(它也适用于具有单个值的键。)@RicardoVilaça:如果同一个键被多次传递,例如
?foo=1&foo=4&foo=2&foo=5将用于
请求。GET['foo']
给予
5
,而
请求。GET.getlist('foo')
将返回
[1,4,2,5]
。但是如果您确定只传递一次值,那么使用
request.GET['foo']
确实更方便。
request.POST.getlist('projects')  # returns ['1', '2']