Flask的动态HTML内容和Python变量

时间:2013-02-20 08:15:32

标签: python html flask

在用户端,说我有人通过表格选择学校记录,以显示在下表中。

例如,他们从名单中选择他们的名字,并从数据库中提取他们的记录。

根据他们的课程年份,他们可能有1年,2年,3年或4年的记录,因此提取的数据总是看起来不同。

提交表单后,他们的记录存储在包含所有记录的变量中,然后将每个记录分解为子类型,例如,英语部门中的所有记录。这些子类型存储在其他列表中 - 因此所有英文记录都有一个列表。我们称之为变量english_records。我想使用这些子类型变量只能呈现用户想要查看的数据,并呈现该特定列表中的所有数据。

因此,使用Flask的render_template函数,我正在尝试将每个记录发送到一个html模板,该模板将为每条记录创建一个表格单元格。

我一直在尝试(到目前为止还没有工作)是这样的:

的Python:

i = 0
def index():
    for e in english_records:
        english_records = [
            { 
                'english': english_records[i]
            }
        ]
        i = i + 1
    return render_template("index.html",
        english_records = english_records)

在HTML中:

...table above...
{% for record in english_records %}
<td>
  {{record.english}}
</td>
{% endfor %}
...table continues...

到目前为止,我一直在为每条记录创建表格单元格,但记录没有通过。有谁知道怎么做?

2 个答案:

答案 0 :(得分:2)

您是否有预先处理数据的原因? english_records看起来像什么?如果我的预感是正确的,那么你实际上根本不需要for循环。

还有一个问题是你在for循环中用english_records覆盖了初始的english_records变量,所以赋值虽然在语法方面是合法的,但在逻辑上是荒谬的。

另一个问题是,根据第一个english_records的实际类型,您不需要使用计数器:如果english_recordslist,那么它将会包含您正在寻找的价值。如果english_recordsdict,则枚举它可能看起来像for key, val in english_records.iteritems()

答案 1 :(得分:0)

 for e in english_records:
        english_records = [
            { 
                'english': english_records[i]
            }
        ]
        i = i + 1

这个循环在这里创建一个列表,但这些列表的成员没有'english'键, 所以在模板中,循环被执行,但{{record.english}}没有值,因此被忽略。 你得到的只是没有任何数据的表格行。