python - 来自 python 字典的 HTML 表
问题描述
我正在尝试修改烧瓶应用程序中的部分代码。到目前为止,烧瓶应用程序做了什么:
它有大约 20 个链接,当有人单击链接时,它会返回 .json 对象(由 python 字典通过 jsonify 形成)。
我正在尝试做的事情:
以可能提取到 .csv 的表格格式返回相同的结果
我创建了以下函数:
def tab_out(output = {}):
return render_template('output_tab.html',output=output)
将字典发送到一个 html 页面,其中包含:
{% block content %}
<body>
<pre>
<table>
<tr>
<th>Header 1</th>
<th>Header 2</th>
<th>Header 3</th>
<th>Header 4</th>
<th>Header 5</th>
<th>Header 6</th>
</tr>
{% for key_1, value in output.items() %}
{% for key in value.keys() %}
<tr>
<td>
{{ key_1 | safe }}
</td>
<td>
{{ key | safe }}
</td>
<td>
{{ value[key]["Header_3"] }}
</td>
<td>
{{ value[key]["Header_4"] }}
</td>
<td>
{{ value[key]["Header_5"] }}
</td>
<td>
{{ value[key]["Header_6"] }}
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
</pre>
</body>
{% endblock %}
有什么问题:
我需要让它充满活力。
每个页面都有不同的标题。在每个页面中,生成的 .json 来自具有子字典的字典,并且每个字典中的键数可以不同。所以我不能事先指定标题。我希望它们动态创建。如果有 3 个子字典并将结果作为标题,其余作为值,则可能会展平字典(假设达到 2 级)。
我在 sa 中读过几个类似的问题,但没有一个对我有真正的帮助。有任何想法吗?
解决方案
下面的 jinja 代码将从任何 FLAT dict 生成 HTML 表。
标题是动态的。entry_list
是一个字典列表。您的代码应该创建一个平面字典。
<table style="width:100%">
<!-- table header -->
{% if entry_list %}
<tr>
{% for key in entry_list [0] %}
<th> {{ key }} </th>
{% endfor %}
</tr>
{% endif %}
<!-- table rows -->
{% for dict_item in entry_list %}
<tr>
{% for value in dict_item.values() %}
<td> {{ value }} </td>
{% endfor %}
</tr>
{% endfor %}
</table>
推荐阅读
- ios - 当 git 提交时 Xcode 项目应该跟踪哪些文件
- php - 在 Debian 10 中安装 php7.4-cgi
- python - 如何处理在窗口生成的csv末尾附加的空行?
- amazon-web-services - 使用 AWS 控制台自动激活接收账单警报选项
- docker - docker pull 失败,出现 503
- networking - OSPF 区域拓扑
- regex - 如何使用 RegExp 查找大写字母?
- javascript - 如何优化以下 JavaScript 函数
- android - CameraX - 取消绑定预览用例时崩溃
- ios - 如何在 alamofire 5.0.2 版本中设置自定义超时