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