当前位置: 首页 > 面试题库 >

如何构造数据以在Flask中轻松构建HTML表

凌志学
2023-03-14
问题内容

我试图从存储在表中的数据创建HTML表。我的数据是从表中读取并转换为列表的字典,例如:

x = {'date':[u'2012-06-28', u'2012-06-29', u'2012-06-30'], 'users': [405, 368, 119]}

我的目标是为任意列表长度创建具有以下结构的HTML表:

<table>
  <thead>
    <th>Date</th>
    <th>Users</th>
  </thead>

  <tbody>      
    <tr>
      <td>2012-06-28</td>
      <td>405</td>
    </tr>
    <tr>
      <td>2012-06-29</td>
      <td>368</td>
    </tr>
    <tr>
      <td>2012-06-30</td>
      <td>119</td>
    </tr>
  </tbody>
</table> 

我尝试在Flask模板中执行以下两种不正确的方法:

<tbody>
  {% for line in x %}
    <tr>
      <td>{{ x.date|tojson|safe }}</td>
      <td>{{ x.users }}</td>
     </tr>
   {% endfor %}
</tbody>

它将整个列表打印到每一列中。

和:

{% for date in x.date %}
  <tr><td>{{ date|tojson|safe }}</td></tr>
{% endfor %}

{% for users in x.users %}
  <tr><td>{{ users }}</td></tr>
{% endfor %}

它将所有内容简单地打印到第一列中。

这些实验和许多其他死胡同使我相信,没有什么简单的方法可以构建表,就像我想要的当前数据结构一样。

鉴于此,我有两个问题:
1)我将如何使用当前数据结构构建表?
2)此用例的数据结构的标准或理想方式是什么?

提前致谢。


问题答案:

如你所说,你可以更改数据结构,也可以更改模板代码。这是保持当前结构的一种方法:

{% for row_index in range(x['date']|count) %}
    <tr>
      <td>{{ x['date'][row_index]|tojson|safe }}</td>
      <td>{{ x['users'][row_index] }}</td>
    </tr>
{% endfor %}

或者你可以在python中重组数据:

x = zip(x['date'], x['users'])

然后使用此模板:

{% for row in x %}
    <tr>
      <td>{{ row[0]|tojson|safe }}</td>
      <td>{{ row[1] }}</td>
    </tr>
{% endfor %}

你还可以对数据进行结构化,以使模板不依赖于单元格的顺序:

from itertools import izip
x = [dict(date=d, user=u) for d, u in izip(x['date'], x['users'])]

然后,你可以像这样访问数据:

{% for row in x %}
    <tr>
      <td>{{ row['date']|tojson|safe }}</td>
      <td>{{ row['user'] }}</td>
    </tr>
{% endfor %}


 类似资料:
  • 问题内容: 在Flask-SQLAlchemy教程中,定义了User模型的构造函数: 对于具有两列的表,这可能是可以接受的,但是如果我有包含10列以上的表怎么办?每次定义新模型时 都 必须定义构造函数吗? 问题答案: 在大多数情况下,未在模型类中定义构造函数会为您提供正确的行为。 Flask- SQLAlchemy的基模型类(也是SQLAlchemy的声明性基类)定义了一个构造函数,该构造函数只接

  • 商店1 第1节 第2节 2号商店 null null null 我会在'store'属性中设置区段,因为不同的商店有不同的区段。 到目前为止我认为一切都是正确的。我的问题是如何将用户分配到商店中的特定区段。会是user.company.store[3].section[1]吗?如果一个节/存储区被删除,那么节/存储区的indexOf值不会改变吗?人们通常是怎么做这样的事情的?我基本上是在创建与文件

  • 问题内容: 在上一集中(如何在MySQL中构建跨数据库查询),我学习了如何在MySQL中构建跨数据库查询。这很好用,但是当我们的英雄尝试在PHP中使用这种新发现的知识时,他发现了他最好的朋友FAIL在等他。 我看了看PHP。这似乎暗示着,如果我想将MySQL与PHP结合使用,我有两种选择: 使用,但是每次只能使用一个数据库。这是我们当前的设置,将数据库作为名称空间标识符似乎不起作用(它在MySQL

  • 问题内容: 我在同一台服务器上有两个数据库。Google给了我一些提示,但是我找不到任何“官方”信息。有人可以指出我的文档来说明如何执行此操作吗?使用PHP的说明也将很有用。谢谢! 问题答案: 我在同一台服务器上有两个数据库。…如何在MySQL中构建跨数据库查询? 通过在表的前面加上适当的数据库名称,可以访问同一MySQL实例上的其他数据库。IE: 记住 查询将使用用于建立连接的身份验证凭据来执行

  • 本文向大家介绍轻松掌握Java建造者模式,包括了轻松掌握Java建造者模式的使用技巧和注意事项,需要的朋友参考一下 建造者模式针对的是复杂对象的构建,比如一个产品有多个部分构成,每个部分都可以单独进行生产,这时候就可以用建造者模式,由Builder构造产品的每个部分,然后又director完成最后产品的组装。 特点:     1、分工更加明确,组建和构造分开,能更好的控制产品的生产。     2、