【发布时间】:2014-02-05 15:39:47
【问题描述】:
我想传递一个页面列表并在 Jinja2 中循环显示我网站的所有页面。我使用 Flask 来构建和运行应用程序。我遵循了官方的烧瓶文档以及this tutorial。但是,当我尝试传递列表并尝试循环遍历它时,它不会出现在呈现的 html 中。
我做错了什么?如何正确传递列表并使用base.html 作为模板循环遍历它?
这是我的代码,其中包含硬编码的虚拟页面列表:
app.py:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
page_list = ['Eins', 'Zwei']
return render_template('base.html', pages=page_list)
if __name__ == "__main__":
app.run(port=8000)
还有base.html,位于/templates/:
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>All the nice pages</h1>
{% for page in pages %}
<p>{{ page }}</p>
{% endfor %}
</body>
</html>
当我运行应用程序并浏览到http://127.0.0.1:8000/ 时,我得到了以下信息:
<html>
<head>
<title>Test</title>
</head>
<h1>All the nice pages</h1>
<body>
</body>
</html>
【问题讨论】:
-
有些不对劲。您的代码可以按照您的预期工作。启动应用程序后您是否更改了
app.py?您需要重新加载它。我建议将debug=True添加到您对app.run()的呼叫中。 -
代码运行正常,重启你的服务器
-
我试用了您的应用程序,它运行良好,它将两个页面列表都打印到浏览器。重新加载应用程序或停止在后台同时运行的应用程序。
-
另外,不相关,但请注意 HTML 标记的位置。您的
h1出现在body标记之外。 -
@all!谢谢,重启服务器就行了……
标签: python list loops flask jinja2