Flask结合HTML5 for循环渲染静态图片不生效问题求助
Flask模板遍历元组列表渲染图片失败解决方案
核心错误原因
- 视图函数传递给模板的变量名为
data,但模板中直接遍历Python内置关键字list,无法匹配到传入的元组列表数据 - Jinja2语法不支持在
{{ }}表达式内部嵌套{{ }}标识,原有代码在url_for的filename参数中嵌套了变量标识,导致最终传入的路径是字符串{{ item[0] }},而非实际的图片路径
额外提示:不建议使用Python内置关键字
list作为你的元组列表变量名,容易引发命名冲突,可改为更有语义的名称如photo_list,对应修改模板遍历对象即可。
修复方案
直接修改模板代码即可,调整遍历对象、移除多余的变量嵌套标识,修复后代码如下:
{% for item in data %} <p>{{ item[0] }}</p> <img src="{{ url_for('static', filename=item[0]) }}"> {% endfor %}
修改后Jinja2会正确解析item[0]的实际值作为filename参数传入url_for,生成正确的静态资源路径,即可正常加载图片。
内容的提问来源于stack exchange,提问作者Finn Kliewer
相关产品推荐
相关产品推荐

