Python Flask循环仅输出列表首个元素,如何打印全部内容?
问题原因及解决办法
嘿,这个问题我刚学Flask的时候也踩过坑!咱们先说说为啥只显示Hello:
你在视图函数的for循环里用了return语句——return的作用是立即结束函数并返回结果,所以第一次循环拿到greetings里的第一个元素Hello时,函数就直接把这个值传给模板并结束了,后面的how、are 、you根本没机会被处理到。
修正方案
1. 先修改Flask视图函数
不用在循环里返回,直接把整个列表传给模板就行:
@app.route('/send') def send(): greetings = ['Hello', 'how', 'are ', 'you'] # 直接传递整个列表给模板 return render_template('test.html', greetings=greetings)
2. 再修改HTML模板(二选一)
如果你想把每个元素单独用<h1>标签显示,就用Jinja2的循环语法遍历列表:
{% for word in greetings %} <h1>{{ word }}</h1> {% endfor %}
如果你想把列表元素拼成一个完整的句子显示,就用Jinja2的字符串拼接方法:
<h1>{{ ' '.join(greetings) }}</h1>
这样修改后,网页就能显示列表里的所有内容啦~
内容的提问来源于stack exchange,提问作者yesmen
相关产品推荐
相关产品推荐

