温馨提示:本文翻译自stackoverflow.com,查看原文请点击:django - Cannot access array passed by post

django - 无法访问帖子传递的数组

发布于 2020-03-27 10:31:56

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

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

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

查看更多

查看更多

提问者
Sergio Raneli
被浏览
119
Willem Van Onsem 2019-07-03 21:38

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

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

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

如文档所述:

QueryDict.getlist(key, default=None)

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

它返回最后一个值的事实也被记录在案

QueryDict.__getitem__(key)

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