GET或POST字典中项目的顺序会发生变化吗?django



我只是想知道GET或POST字典中项目的顺序是否会改变?

如果你有一个3人的名单,你说:

模板:

 for x in listof3people:
    <input type="hidden" name="x.name">
    <input type="number" name="birthday">

在视图中,当您执行getlist(name)时,信息的顺序永远不会改变?

因此,如果查询按该顺序调出mark、mindy和sam,则get列表将始终显示:

马克和他的生日,明迪和她的生日,还有萨姆和他的生日。我之所以提出这个问题,是因为我必须根据位置链接信息,所以找到"条"的位置,并在嵌套列表中提取相同位置的数据。

在幕后,用于GETPOSTQueryDict类是根据six.moves.urllib.parse.parse_qsl的输出构建的。这是基于标准的urllib.parse_qsl函数,您可以从源代码中看到它确实维护了URL:中给出的顺序

https://github.com/python/cpython/blob/a54346b3a1232cdd503abc4d4e9e526ba65b26b3/Lib/urllib/parse.py

这样的输入应该按照它们在文档中出现的相同顺序放入URL/编码的表单数据中:浏览器是否保留GET/POST上具有相同名称的输入顺序?

请注意,我所说的只是关于使用getlist获取的同一密钥的多个值。QueryDict与任何其他dict派生类一样,不保证dict键的顺序。

所以这是可能的,但就我个人而言,我会传递一个明确的标识符,而不是依赖它

我认为您在谈论QueryDict。这是一个自定义的Python字典。通常情况下,无法保证键总是按推入的顺序出现。因此,出于您的目的,您可以在表单中使用一些额外的权重值,以便根据这些值对传入数据进行排序。

最新更新