将Python dict转换为HTML中的交互式表

时间:2016-03-13 10:49:34

标签: python html database dictionary

我有一些数据的Python dict结构,比如N行,每行包含一些字段,idname包含自由文本,property包含一些已知的关键字之一。 我想将此dict转换为交互式HTML表格,也就是说,我希望最终将其上传到我的网站,人们可以按名称排序,根据property的关键字进行过滤,等

  1. 最简单的方法是什么?
  2. 现在,其中一个字段是图像地址。我也希望这个表以某种方式包含图像(也许作为缩略图),它将超链接到orig。大小的图像。也就是说,我的网站会显示包含图片的idnameproperty以及image thumb的一些行。

    1. 我该怎么做?
    2. 我一般都倾向于使用Python,但其他简单的解决方案也会受到欢迎。

      谢谢!

1 个答案:

答案 0 :(得分:1)

正如我在评论中告诉你的那样,你必须使用Django。作为介绍,Django附带了一些模板。

从文档中我们知道:

  

作为一个Web框架,Django需要一种方便的方法来生成HTML   动态。最常见的方法依赖于模板。一个模板   包含所需HTML输出的静态部分以及一些   描述如何插入动态内容的特殊语法。

现在,假设你有一本字典:

data = { 
    "test1": ['val1', 'val2', 'val3', ],
    "test2": ['val1', ],
    "test3": ['val1', 'val2', 'val3', 'val4', ],
} 

并且您希望它在HTML表格中呈现,您可以执行以下操作:

from django.template import Context, Template

data = {
    "test1": ['val1', 'val2', 'val3', ],
    "test2": ['val1', ],
    "test3": ['val1', 'val2', 'val3', 'val4', ],
}

# we'll need to split the tests from the data

tests = ["test1", "test2", "test3"]

columns = [data[test] for test in tests]

# get the length of the longest column
max_len = len(max(columns, key=len))

for col in columns:
    # padding the short columns with None
    col += [None,] * (max_len - len(col))

# Then rotate the structure...
rows = [[col[i] for col in columns] for i in range(max_len)]


dj_template ="""
<table>
{# tests #}
    <tr>
    {% for test in tests %}
        <th>{{ test }}</th>
    {% endfor %}
    </tr>
{# data #}
{% for row in data %}
    <tr>
        {% for val in row %}
        <td>{{ val|default:'' }}</td>
        {% endfor %}
    </tr>
{% endfor %}
</table>

请在下次提供一些代码作为您的问题,可能会被视为偏离主题