这是一个参考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 的新手,它可以解释任何菜鸟错误。
查看 文档
render_template
。
它需要两个参数:
- template_name_or_list (Union[str, List[str]]) – 要渲染的模板的名称,或者将渲染第一个存在的具有模板名称的迭代器
- 上下文(任意)——模板上下文中应该可用的变量。
但是你只通过了一个:
render_template("index.html")
由于您还没有向其传递
context
,因此其中没有可用的变量,因此 tableau
不存在。