Flask中使用for循环渲染JSON数据失败的问题求助
问题分析与解决方案
你遇到的问题核心是模板循环使用的变量名和Flask视图传递的变量名不匹配,导致循环无法获取到数据,所以内容完全不显示。
具体问题点:
在你的Flask about视图函数中,加载JSON数据后传递给模板时,用的变量名是races:
return render_template("about.html", page_title="About", races=data)
但在about.html模板里,你循环的却是一个不存在的company变量:
{% for member in company %}
模板找不到company这个变量,循环逻辑直接跳过,自然看不到里面的HTML内容。而你用{{ races[0].name }}能正常显示,也印证了races才是模板里正确的数据源变量名。
修复步骤:
只需要把模板里的循环变量替换成races即可,修改后的循环代码如下:
{% for member in races %} <div class="row featurette"> <div class="col-md-7"> <h3>{{member.name}}</h3> <p> {{member.description}} </p> </div> <div class="col-md-5"> <img class="featurette-image img-responsive" src="{{member.image_source}}" alt="Picture of {{ member.name }}"> </div> </div> <hr class="featurette-divider"> {% endfor %}
补充小提示:
你之前说单条数据时循环能工作,大概率是当时视图函数传递的变量名就是company,后来修改了视图里的变量名但没同步更新模板,才导致现在多数据时失效。以后修改变量名记得同步检查视图和模板的对应关系哦~
内容的提问来源于stack exchange,提问作者Elias Prado
相关产品推荐
相关产品推荐

