【问题标题】:Django adding dict to template as a tableDjango将dict作为表格添加到模板
【发布时间】:2020-06-15 03:09:53
【问题描述】:

如何使用 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] %} - 无法解析余数:'[0]' from 'values[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>

结果如下:

谢谢!

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    我认为您的 HTML 与您所说的结果不符;您的 Information 标头在 Value 标头之前,但在您的输出中 Value 排在第一位。此外,您只有两个表头 &lt;th&gt;,但您的嵌套字典有 3 个值,因此您当前处理数据的方式会导致表体中的单元格多于表头。

    另一个问题:你的values 也是一个字典,所以{% for v in values %} 只是让你得到嵌套字典的键(012),你永远不会得到嵌套值( 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 %}
    

    【讨论】:

    • 如果你只有我提到的字典 - {'Information': {0: 'size', 1: 'energy [kWh]', 2: 'ratio [PR]'}, 'Value': {0: 570.66, 1: 984092.66, 2: 81.7}} - 你将如何编写包含所有键和嵌套值的 HTML 表?
    • 还有什么比 dict 更舒服的呢? (我有一个转换为 dict 的数据框)-谢谢!
    • 你会推荐什么方式来构建数据?
    • 我添加了一个如何以不同方式传递数据并使用它的示例(在每行的一对信息/值上)
    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 2021-03-05
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2020-07-22
    • 2018-09-12
    • 1970-01-01
    相关资源
    最近更新 更多