我的 jinja 模板得到一个对象,它有很多变量名,这个属性各不相同,所以它们的名字不同,我正在寻找一种基于前缀和 for 循环访问这个属性的方法:
{% for i in Object.vars %}
<h1> {{ Object.attribute_ + i }} </h1>
{% endfor %}
我正在尝试访问 Object.attribute_1、Object.attribute_2 等。上面的代码当然行不通,但我想不出这样做的方法。
最佳答案
请记住,在您的模板文件中执行过多逻辑会导致(长期)维护您的代码的问题。
我想说的是,将您的逻辑保留在模板之外,并在渲染模板之前创建一个对象列表,使用 getattr()功能:
for i in Object.vars:
list_of_objects.append(getattr(Object, 'attribute_' + i))
现在渲染模板时将列表传递给这样的:
render_template('page.html', list_of_objects=list_of_objects)
关于python - Jinja2动态变量构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27004708/