Skip to main content
 首页 » 编程设计

python之Jinja2 中带有相关变量的 For 循环

2025年05月04日6youxin

我在 Jinja 模板中编写 for 循环时遇到困难,该模板遍历包含水果名称的变量,并且在正文中是该水果的特征,它也作为变量提供。

假设我们有以下变量

fruit=apple,banana,grapes 
apple_color=red 
apple_weight=1kg 
banana_color=yellow 
banana_weight=2kg 
grapes_color=green 
grapes_weight=3kg 

我很难创建一个 for 循环来迭代 fruit 变量,然后在主体中调用仅特定于被迭代的 fruit 的变量。因此,在第一次迭代中,当值为 apple 时,主体必须使用变量 apple_color 和 apple_weight,同样对于第二次迭代 banana,主体中的变量是 banana_color 和 banana_weight。

这是否需要将列表用于其他用途?

请您参考如下方法:

在您的代码中:

fruits = {'apple' : {'color', apple_color, 'weight' : apple_weight}, 'banana' : {'color' : banana_color, 'weight' : banana_weight}, 'grapes' : {'color' : grapes_color, 'weight' : grapes_weigh}}  
 
or if you use your already defined variables like  : apple_color = 'red' 
 
fruit_names = ['apple', 'banana', 'grapes'] 
fruits = {} 
for each in fruit_names : 
    fruits[each] = {} 
    fruits[each]['color'] = globals()['%s_%s' %(each, 'color')] 
    fruits[each]['weight'] = globals()['%s_%s' %(each, 'weight')] 

在你的模板中:

{% for each in fruits %} 
    {{ fruits[each].color }} 
    {{ fruits[each].weight }} 
{% endfor %} 
 
or : 
 
{% for key, value in fruits.items() %}  
    {{ key }} 
    {{ value.color }}  
    {{ value.weight }}  
{% endfor %}