繁体   English   中英

Django 将字典作为表格添加到模板

[英]Django adding dict to template as a table

如何使用 Django 将字典很好地添加到模板中 - 只需要一个漂亮的表格中的所有信息。

我有以下字典:

{'Information': {0: 'size', 1: 'energy [kWh]', 2: 'ratio [PR]'}, 'Value': {0: 570.66, 1: 984092.66, 2: 81.7}}

尝试使用{% for v in values[0] %} -无法解析余数:来自 'values[0]' 的 '[0]'

HTML 零件

         <div>
            <table>
                <tr>
                    <th>Information</th>
                    <th>Value</th>
                </tr>
                    <tr>
                        {% for key, values in dict_data.items %}
                        {% for v in values %}
                        <td>{{v}}</td>
                        {% endfor %}
                    </tr>
                    {% endfor %}
            </table>
        </div>

结果是: 在此处输入图像描述

谢谢!

我认为您的 HTML 与您所说的结果不符; 您的Information header 在Value header 之前,但在您的 output 中, Value是第一位的。 此外,您只有两个标题<th> ,但您的嵌套字典有 3 个值,因此您当前处理数据的方式将导致表体中的单元格多于标题。

另一个问题:你的values也是一个字典,所以{% for v in values %}只是让你得到嵌套字典的键( 0 , 1 , 2 ),而你永远不会得到嵌套值( sizeenergy [kWh] , ratio [PR] )。 你可能想要这样的东西:

{% for key, values in dict_data.items %}
{% for sub_key, sub_value in values.items %}

另外:您正在处理每行一个键/值集,因此表的第一行将具有Information值,第二行将具有Value值(反之亦然),但您想要的是一个值信息和每行值中的一个值。 因此,最终您将需要以不同的方式构建数据(也许成对)。

我将拥有信息/值对,而不是您当前的结构:

dict_data = {'Information': {0: 'size', 1: 'energy [kWh]', 2: 'ratio [PR]'}, 'Value': {0: 570.66, 1: 984092.66, 2: 81.7}}
info_value_pairs = [('size', 570.66), ('energy [kWh]', 984092.66), ('ratio [PR]', 81.7)]

然后在您的模板中:

{% for pair in info_value_pairs %}
<tr><td>{{ pair.0 }}</td><td>{{ pair.1 }}</td></tr>
{% endfor %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM