在Jinja2模板中调用构造的变量名称?

时间:2016-05-26 21:37:50

标签: jinja2

在Jinja2中有没有办法构造一个变量名然后调用它?我想做这样的事情:

{% for type in ('Students', 'Faculty', 'Groups') %}
    {% set import_name = 'latest_' + type|lower + '_import' %}
    {{ type }}: {{ import_name.created_at }}
{% endfor %}

我希望输出是这样的:

Students: 5/26/2016
Faculty: 5/25/2016
Groups: 5/25/2016

我在模板范围内设置了变量latest_students_import,latest_faculty_import和latest_groups_import,并希望避免在for循环中使用大的条件。我根据类型设置import_name,然后尝试“调用”import_name。我想要{{call(import_name)}}之类的东西。这是可能的,还是有其他方法可以解决这个问题?

在这种情况下,我想我可以通过三个模板变量名称以反向顺序循环执行,然后“打印”缩写的名称,大写,但我更愿意这样做。

1 个答案:

答案 0 :(得分:1)

一种可能性是在服务器端创建包含变量的listimport_name。然后,您可以将该对象作为模板变量发送到Jinja。目前您只需将.created_at设置为等于字符串,该字符串不会具有Object.create(null)属性。