Jinja2模板语法错误:未知标签'result1'问题排查求助
问题分析与解决
错误原因
- Jinja2变量赋值语法错误:你直接在
{% %}块内写变量赋值语句,不符合Jinja2的语法规则。Jinja2中声明变量必须使用{% set %}标签。 - 数据索引错误:给site2相关变量赋值时,你全部使用了
data[0],这会导致site2获取到的是site1的数据,正确索引应为data[1]。
修正后的模板代码
方式一:逐行声明变量
{% set result1 = data[0][0] %} {% set image_list1 = data[0][1] %} {% set site1_id = data[0][2] %} {% set result2 = data[1][0] %} {% set image_list2 = data[1][1] %} {% set site2_id = data[1][2] %}
方式二:列表解包(更简洁)
利用Jinja2支持的列表解包特性,直接一次性提取列表内的元素:
{% set result1, image_list1, site1_id = data[0] %} {% set result2, image_list2, site2_id = data[1] %}
优化建议(可选)
后端传递数据时改用字典格式,能让模板中的数据访问更直观,降低出错概率:
return render_template('comparison.html', site1={'result': site1_result, 'images': site1_images, 'id': site1_site_id}, site2={'result': site2_result, 'images': site2_images, 'id': site2_site_id} )
之后在模板中可直接通过site1.result、site2.images的形式访问数据。
内容的提问来源于stack exchange,提问作者Vinay
相关产品推荐
相关产品推荐

