在 HTML 中与 Python 并行迭代多个列表(Flask)

Iterating multiple lists in parallel with Python inside HTML (Flask)

我正在松散地构建一个 python 托管在 pythonanywhere following this tutorial 上的 Web 应用程序。我正在修改生成的应用程序以适应我自己的目标。

这是我的 python 代码,我用它来将变量传递给 HTML 文档,以便使用 for 循环将它们添加到 table:

from flask import Flask, redirect, render_template, request, url_for

app = Flask(__name__)
app.config["DEBUG"] = True

productnames = []
reviews = []

@app.route("/", methods=["GET", "POST"])
def index():
if request.method == "GET":
    return render_template("main.html", reviews=reviews, productnames=productnames)

reviews.append(request.form["review"])
productnames.append(request.form["products"])
return redirect(url_for('index'))

在我的 HTML 中使用以下代码,我循环遍历该列表并将每个项目添加到 table:

{% for review in reviews %}
    <tr>
        <td></td>
        <td>{{ review }}</td>
        <td></td>
    </tr>
{% endfor %}

这行得通,但是,我试图遍历多个列表并发现各种声明说 zip 函数是我正在寻找的,所以我将我的 HTML 代码更改为以下段并且它不再有效。

{% for review, product in zip(reviews, productname) %}
    <tr>
        <td>{{ product }}</td>
        <td>{{ review }}</td>
    <td></td>
</tr>
{% endfor %}

从 python 任何地方,错误页面显示 "Error code: Unhandled Exception",通过 pythonanywhere 仪表板的错误日志显示:

2018-04-24 12:57:23,957:   File "/home/FdScGroup/cloudapp/templates/main.html", line 43, in top-level template code
2018-04-24 12:57:23,957:     {% for review, product in zip(reviews, productnames) %}

如何让它工作?

感谢任何帮助,谢谢。

zip()是一个python函数,不是Flask(Jinja2)模板语言中执行的函数。

因此在视图中应用 zip() 并将结果传递给模板:

return render_template("main.html", reviews_products=zip(reviews, productnames))

然后应用这个技巧: 在模板中。