我只是想知道 GET 或 POST 字典中的项目顺序是否会改变?
如果您有 3 个人的名单,并且您说:
模板:
for x in listof3people:
<input type="hidden" name="x.name">
<input type="number" name="birthday">
在 View 中执行 getlist(name) 时,信息的顺序永远不会改变,正确吗?
因此,如果查询按顺序提取 mark 、 mindy 和 sam ,则获取列表将始终显示:
按顺序是马克和他的生日、明迪和她的生日、萨姆和他的生日。我之所以这么问,是因为我必须根据位置链接信息,因此找到“bar”的位置,然后将数据拉到嵌套列表中处于同一位置的数据。
最佳答案
在幕后,用于 GET
和 POST
的 QueryDict
类是根据 six.moves.urllib 的输出构建的.parse.parse_qsl
。这是基于标准的 urllib.parse_qsl 函数,从源代码中可以看到它确实维护了 URL 中给出的顺序:
https://github.com/python/cpython/blob/a54346b3a1232cdd503abc4d4e9e526ba65b26b3/Lib/urllib/parse.py
此类输入应该按照它们在文档中出现的顺序放入 URL/编码表单数据中: Do browsers preserve order of inputs with same name on GET/POST?
请注意,我仅讨论使用 getlist
获取的同一键的多个值。与任何其他 dict
派生类相比,QueryDict
不保证 dict 键的顺序。
所以这是可能的,但就我个人而言,我会传递一个明确的标识符而不是依赖它。
关于django - GET 或 POST 字典中的项目顺序是否会改变? Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25874614/