【问题标题】:Dynamic HTML content and Python variables with Flask使用 Flask 的动态 HTML 内容和 Python 变量
【发布时间】:2013-02-05 04:11:29
【问题描述】:

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

例如,他们从名字列表中选择他们的名字,然后从数据库中提取他们的记录。

根据他们的年级,他们可能有 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...

到目前为止,我一直在为每条记录创建表格单元格,但记录没有被传递。有人知道怎么做吗?

【问题讨论】:

    标签: python html flask


    【解决方案1】:
     for e in english_records:
            english_records = [
                { 
                    'english': english_records[i]
                }
            ]
            i = i + 1
    

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

    【讨论】:

    • 那我该如何解决呢?第 4 行不是给出那个键吗?
    【解决方案2】:

    您对数据进行预处理是否有原因? english_records 是什么样的?如果我的预感是正确的,那么您实际上根本不需要 for 循环。

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 1970-01-01
      • 2022-01-23
      • 2018-10-29
      • 1970-01-01
      • 2021-11-27
      • 2015-09-24
      • 1970-01-01
      • 2016-04-28
      相关资源
      最近更新 更多