如何在 Django 模板中访问这种类型的字典(字典中的字典(?
我想高度自定义 Pandas 在 Django 视图/模板中生成的数据帧。 我能够生成要渲染的字典,但事实证明,使用模板标签访问元素很困难。
下面是字典的示例:
df_dict =
{
('Key1', 'Key2'): {
'Line 1': '',
'Line 2': '',
'Line 3': 53000.0,
'Line 4': -120000.0,
'Line 5': 45000.0
},
('Key3', 'Key2'): {
'Line 1': '',
'Line 2': 100.0,
'Line 3': '',
'Line 4': '',
'Line 5': ''
},
('Key4', 'Key2'): {
'Line 1': 1000.0,
'Line 2': '',
'Line 3': 2000.0,
'Line 4': '',
'Line 5': ''
}
}
我想要的模板输出(不考虑 css 格式(是:
Key1 Key3 Key4
Key2 Key2 Key2
Line 1 1000
Line 2 100
Line 3 53000 2000
Line 4 -120000
Line 5 45000
我已经厌倦了一个简单的模板标签来迭代字典,如下所示:
{% for key, value in object %}
<li>{{key}} : {{value}}</li>
{% endfor %}
但它只规定:
Key1 : Key2
Key3 : Key2
Key4 : Key2
我不知道如何进入上述密钥对的值的字典。 我也通过无数的.dot符号标签工作,没有任何运气。
我还查看了其他可以呈现"漂亮"html 的库,但我想进一步使用bootstrap
进行自定义。 我也看过文之心的解决方案,但我希望有更多的灵活性。
数据结构更新
这些信息显然来自 QuerySet,但为了从多个模型合并和透视,我使用了 Pandas。 正确构建数据帧并格式化后,我使用了df_dict.to_dict()
方法(其中df_dict
是我的数据帧(,然后将其传递到上下文字典中。 基本上:
context = {
#stuff,
'df_dict': df_dict,
#more stuff,
}
return context
我展示的结构很简单 - 列索引更有可能具有三个或更多键。 值的大小和设计在设计上是恒定的(换句话说,每个键组将有 5 行值字典,或值字典中的 19 行(。
最后说明@ScottSkiles缩小差距的地方 - SO Question 在这里开始使用字典中的字典,但最后使用模板示例的答案省略了模板中的.items
方法,数据集是一个列表。 但下面的答案是恰当的。
尝试:
{% for key, values in object.items %}
<li>{{key}} :
<ul>
{% for value in values %}
<li>{{value.name}}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
通过:如何在 Django 模板中的字典中遍历字典?