我的jinja模板获取了一个具有许多变量名称的对象,这些属性因其名称而异,我正在寻找一种基于前缀和for循环访问此属性的方法:
{% for i in Object.vars %}
<h1> {{ Object.attribute_ + i }} </h1>
{% endfor %}
我正在尝试访问Object.attribute_1,Object.attribute_2等。上面的代码当然不会起作用,但我想不出这样做的方法。
答案 0 :(得分:4)
请记住,在模板文件中执行过多逻辑会导致(长期)问题以维护代码。
我想说,在使用getattr()函数渲染模板之前,将逻辑保留在模板之外并创建对象列表:
for i in Object.vars:
list_of_objects.append(getattr(Object, 'attribute_' + i))
现在,当渲染模板时,将列表传递给那样:
render_template('page.html', list_of_objects=list_of_objects)
答案 1 :(得分:1)
解决这类问题的规范方法是传递诸如列表或字典之类的结构。动态变量名称几乎总是一个糟糕的主意。