我正在处理将数据传递(通过发布)到视图的表单。 从视图中,如果我打印了整个request.POST对象,我将得到:
<QueryDict: {'csrfmiddlewaretoken': ['<omitted>'], 'doctype-name': ['a7'], 'doctype-validita': ['1'], 'projects': ['1', '2']}>
如果我尝试读取或打印request.POST ['projects']我只会得到最后一个值 即2
答案 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
。)