为啥 django multivaluedict get 返回最后一个元素
Posted
技术标签:
【中文标题】为啥 django multivaluedict get 返回最后一个元素【英文标题】:why django multivaluedict get returns last element为什么 django multivaluedict get 返回最后一个元素 【发布时间】:2014-12-25 00:09:27 【问题描述】:我已经多次使用 Django MultiValueDict 并且一直使用存储在一个键中的整个列表,或者我想使用列表中的第一个值。一个常见的用例是将其用作表单初始数据。
我的问题是默认情况下 Django MultiValueDict 的 get 方法返回最后一个元素。
我必须重写 MultiValueDict 的 getitem 还是有更好的选择?
【问题讨论】:
【参考方案1】:你可以使用:
mv_dict.getlist()[index]
其中index
是列表中您想要的元素的索引。例如0
获取第一个元素。
查看https://github.com/django/django/blob/master/django/utils/datastructures.py#L285
但如果出于某种原因你总是想返回列表的第一个元素,那么子类化MultiValueDict
听起来很合理。这取决于您的用例。
【讨论】:
没错。但我再次必须处理 ListIndex 错误。其实我很好奇为什么最后一个元素而不是第一个元素?最后一个元素的常见用例是什么? 源代码中的答案:这个类的存在是为了解决 cgi.parse_qs 提出的恼人问题,它为每个键返回一个列表,即使大多数 Web 表单提交单个名称-值对。以上是关于为啥 django multivaluedict get 返回最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章
将文件发送到 django 时出现 Keyerror/MultiValueDictKeyError
Django Rest Framework:无法序列化或保存上传的图像
为啥 django-rest-framework 不显示 OneToOneField 数据 - django