我的 jinja 模板获取一个对象,该对象具有许多变量名称,此属性各不相同,因此它们的名称,我正在寻找一种基于前缀和 for 循环访问此属性的方法:
{% for i in Object.vars %}
<h1> {{ Object.attribute_ + i }} </h1>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我正在尝试访问 Object.attribute_1、Object.attribute_2 等。上面的代码当然不起作用,但我想不出这样做的方法。
请记住,在模板文件中执行过多的逻辑会导致(长期)维护代码的问题。
我会说,将您的逻辑保留在模板之外,并在渲染模板之前使用getattr()函数创建一个对象列表:
for i in Object.vars:
list_of_objects.append(getattr(Object, 'attribute_' + i))
Run Code Online (Sandbox Code Playgroud)
现在在渲染模板时将列表传递给这样的:
render_template('page.html', list_of_objects=list_of_objects)
Run Code Online (Sandbox Code Playgroud)