如何在Django模板中访问这种类型的词典(词典中的词典)?
我想在Django视图/模板中高度自定义Pandas生成的DataFrame。我可以生成要渲染的字典,但是事实证明使用模板标签访问元素很困难。
这是字典的一个示例:
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标记。
我还查看了其他将呈现'nice'html的库,但是我想进一步用bootstrap
进行自定义。我也研究了wenzhixin的解决方案,但希望有更大的灵活性。
信息显然来自QuerySet,但是为了合并和枢转多个模型,我使用了Pandas。正确构建并格式化数据框后,我就使用了df_dict.to_dict()
方法(其中df_dict
是我的数据框),然后将其传递给上下文字典。基本上:
context = {
#stuff,
'df_dict': df_dict,
#more stuff,
}
return context
我显示的结构很简单-列索引更有可能具有三个或更多键。值的大小和设计在设计上将是恒定的(换句话说,每个键组将有5行值字典,或在值字典中有19行)。
最后的注释,@ ScottSkiles填补了空白-因此问题here开始使用字典中的字典,但是最后使用模板示例的答案省略了模板中的.items
方法数据集是一个列表。但是以下答案是适当适用的。
答案 0 :(得分:1)
尝试:
{% for key, values in object.items %}
<li>{{key}} :
<ul>
{% for value in values %}
<li>{{value.name}}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
通过:how to iterate through dictionary in a dictionary in django template?