Python 为什么我的字典在django模板中无序?
我已经手动订购了一本名为Python 为什么我的字典在django模板中无序?,python,django,dictionary,Python,Django,Dictionary,我已经手动订购了一本名为lang\u selection\u list的字典。我想循环查看该列表,并使用键val设置选择/选项标记 问题:我的循环创建的输出似乎是随机顺序的,我不知道为什么 问题:如何循环语言选择列表,使选项的顺序与我编写它们时的键值顺序相同 {% var as lang_selection_list %} { "af_ALL": "Afrikaans", "az_ALL": "Azərbaycanca", "id_ALL": "Bahasa Indonesia",
lang\u selection\u list
的字典。我想循环查看该列表,并使用键val
设置选择/选项标记
问题:我的循环创建的输出似乎是随机顺序的,我不知道为什么
问题:如何循环语言选择列表
,使选项的顺序与我编写它们时的键值顺序相同
{% var as lang_selection_list %}
{
"af_ALL": "Afrikaans",
"az_ALL": "Azərbaycanca",
"id_ALL": "Bahasa Indonesia",
"ca_ALL": "Català",
"si_ALL": "සිංහල",
}
{% endvar %}
<select>
{% for key,val in lang_selection_list.items %}
<option value="/{{key}}/index.html">{{val}}</option>
{% endfor %}
</select>
{%var as lang\u selection\u list%}
{
“af_ALL”:“南非荷兰语”,
“azəu ALL”:“azərbaycanca”,
“全部”:“印度尼西亚语”,
“所有人”:“加泰罗尼亚”,
“所有人”:සිංහල",
}
{%endvar%}
{%为键,语言选择列表中的val.items%}
{{val}}
{%endfor%}
如注释中所述,常规词典没有顺序,无法对其进行排序
有不同的方法:
langs = OrderedDict([
("af_ALL", "Afrikaans"),
("az_ALL", "Azərbaycanca"),
("id_ALL", "Bahasa Indonesia"),
("ca_ALL", "Català"),
("si_ALL", "සිංහල"),
])
请参见上下文处理器上的
dictsort
。请查看文档:
注:
就个人而言,我建议不要在模板中创建任何数据结构。将这些数据结构移动到单独的位置,或者移动到一个常规的文本文件中,从中加载它(您可以使用json或yaml来构造它),甚至创建一个模型,使其可通过Django管理员进行维护。可能的副本无法订购标准的
dict
。您必须使用OrderedDict
来“手动订购”字典。如果您想要键值对列表,请使用键值对列表!Dicts是一种查找结构。它们并不适用于所有涉及键和值的用例。@user2357112我如何在django keyvalue中编写变量?[(键1,值1),(键2,值2),…]