我的网页不显示我正在尝试打印的表格

问题描述 投票:0回答:1

这是一个参考CS50X中的lab 9的问题。我在 Ed Discussion 上没有得到答案。 在我的代码中,我有一个数据库及其元素。我正在尝试使用 Jinja 语法在 HTML 文件中以表格形式打印该数据库的每一行。我已经仔细检查并通过在 Python 上打印出数据库的元素来确保它们存在。不过,我的网页上似乎没有发生任何事情。 所以我只需要把它打印出来。我正在使用 Jinja 语法和 Flask,而且我是新手,这可以解释任何菜鸟错误。 这是我的烧瓶代码:

@app.route("/", methods=["GET", "POST"])
def index():
    if request.method == "POST":
        bname = request.form.get("name")
        bday = request.form.get("day")
        bmonth = request.form.get("month")

        db.execute("INSERT INTO birthdays (name, month, day) VALUES (?, ?, ?)", bname, bmonth, bday)

        return redirect("/")

    else:

        tableau = db.execute("SELECT * FROM birthdays")

        return render_template("index.html")

这是我的 HTML

<div class="section">

                <h2>All Birthdays</h2>
                <table>
                    <thead>
                        <tr>
                            <th>Name</th>
                            <th>Birthday</th>
                        </tr>
                    </thead>
                    <tbody>
                        {% for row in tableau %}
                        <tr>
                            <td>{{row['name']}}</td>
                            <td>{{row['month']}}</td>
                        </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>

我基本上只是尝试使用 Jinja 语法将数据库的每一行打印到 HTML 上的表格的每一行中。我的数据库包含所需的所有元素。我是 Flask 和 Jinja 的新手,它可以解释任何菜鸟错误。

python html flask jinja2 cs50
1个回答
0
投票

查看 文档

render_template

它需要两个参数:

  • template_name_or_list (Union[str, List[str]]) – 要渲染的模板的名称,或者将渲染第一个存在的具有模板名称的迭代器
  • 上下文(任意)——模板上下文中应该可用的变量。

但是你只通过了一个:

render_template("index.html")

由于您还没有向其传递

context
,因此其中没有可用的变量,因此
tableau
不存在。

© www.soinside.com 2019 - 2024. All rights reserved.