【问题标题】:why django multivaluedict get returns last element为什么 django multivaluedict get 返回最后一个元素
【发布时间】:2014-12-25 00:09:27
【问题描述】:

我已经多次使用 Django MultiValueDict 并且一直使用存储在一个键中的整个列表,或者我想使用列表中的第一个值。一个常见的用例是将其用作表单初始数据。

我的问题是默认情况下 Django MultiValueDict 的 get 方法返回最后一个元素。

我必须重写 MultiValueDict 的 getitem 还是有更好的选择?

【问题讨论】:

    标签: python django multi-value-dictionary


    【解决方案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 表单提交单个名称-值对。
    猜你喜欢
    • 2021-09-20
    • 2016-06-27
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多