Jinja2:将嵌套数组/字典动态复制到HTML表格行

时间:2017-06-01 17:03:36

标签: python flask jinja2

我一直在为我正在处理的应用程序动态创建一个事件表。我正在尝试使用Jinja2模板逻辑动态填充行。我正在使用flask作为路由,而pure.css用于基本的css。

我的数据组织如下:

event_data{ device_name:[ {'summary':"", ... 'severity'},
                          {'summary':"", ... 'severity'},
                           .
                           .
                           .   ]
            device_name:[ ... ] }

我的模板代码:

    <div style="overflow:auto; height:150px; width:auto; border:1px solid; margin:20px;">
        <table class="pure-table">
            <thead>
                <tr>
                    <th>Name</th>
                    <th style="width:30%;">Summary</th>
                    <th>Last Seen</th>
                    <th>First Seen</th>
                    <th>Device Priority</th>
                    <th>Event Class</th>
                    <th>Production State</th>
                    <th>Severity</th>
                </tr>
            </thead>
            <tbody>
                {% for device in event_data %}
                    {% for event in event_data[device]%}
                        <tr>
                            <td>hello</td>
                            <td>{{ event['summary'] }}</td>
                            <td>{{ event['lastTime'] }}</td>
                            <td>{{ event['firstTime'] }}</td>
                            <td>{{ event['DevicePriority'] }}</td>
                            <td>{{ event['eventClass'] }}</td>
                            <td>{{ event['prodState'] }}</td>
                            <td>{{ event['severity'] }}</td>
                        </tr>
                    {%endfor%}
                {% endfor %}
            </tbody>
       </table>
    </div>

我通过Flask的这个电话获取信息到我的页面:

return render_template('app_page.html', event_data=json.dumps(event_data), device_names=devices)

我测试了等效的python循环,它完美地打印了信息。当我像这样运行它甚至不进入内部循环,因此它不会使任何新行超过标题行。非常欢迎任何建议或意见!

1 个答案:

答案 0 :(得分:0)

将某些内容转储到JSON会产生一个字符串。你不想要一个字符串,你想要你开始的字典。你没有做任何需要JSON的事情。只需传递没有json.dumps的字典。