Django-格式化/访问模板中的Pandas.to_dict()数据框

时间:2018-06-20 18:29:33

标签: python django pandas dictionary django-templates

如何在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方法数据集是一个列表。但是以下答案是适当适用的。

1 个答案:

答案 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?