mcb*_*etz 6 python loops list jinja2 flask
我想传递一个页面列表并在Jinja2中循环它以显示我网站的所有页面.我使用Flask构建并运行应用程序.我跟着官方的烧瓶文档,以及本教程.但是,当我尝试传递列表并尝试循环它时,它不会出现在渲染的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)
Run Code Online (Sandbox Code Playgroud)
并且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>
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序并浏览到时http://127.0.0.1:8000/
,这就是我得到的:
<html>
<head>
<title>Test</title>
</head>
<h1>All the nice pages</h1>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
该代码完全有效。重要的是如果您对列表或字典进行更改,请重新启动服务器。
除此之外,在 Flask 中,您可以传递 Python 中内置的任何类型,无论是 a list
、 adictionary
还是 a tuple
。
以下是传递或多或少相同内容的每种类型的简短示例:
from flask import Flask, render_template
adictionary = {'spam': 1, 'eggs': 2}
alist = ['Eins', 'Zwei', 'Drei']
atuple = ('spam', 'eggs')
app = Flask(__name__)
@app.route('/')
def index():
return render_template('base.html', pages=alist)
@app.route('/tuple/')
def tuple():
return render_template('base.html', pages=atuple)
@app.route('/dict/')
def adict():
return render_template('base.html', pages=adictionary)
if __name__ == "__main__":
app.run(port=8000)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12702 次 |
最近记录: |