jinja变量可以作为for循环中的参数传递吗?

时间:2014-08-16 12:11:18

标签: python google-app-engine jinja2

我定义了一个字符串类型的参数。

% set my_argument = 'list_from_gae' %}

我想在for循环中将其作为参数传递:

{% for i in my_argument %}

do sth

{% endfor %}

my_argument的字符串文字对应于从python应用程序传递的列表。上面的代码不起作用,但是如果我用字符串文字替换for循环中的my_argument,它确实有效。

{% for i in list_from_gae %}

do sth

{% endfor %}

你如何让jinja明白my_argument是变量而不是字符串文字?

1 个答案:

答案 0 :(得分:1)

你不能,不能没有额外的工作来将上下文作为字典。请参阅How to get a list of current variables from Jinja 2 template?一旦有了上下文,就可以context()[my_argument]

您最好将list_from_gae放入传递给模板的词典中;然后,您可以使用它来访问该名称。

E.g。如果你现在正在传递:

template_values = {'list_from_gae': list_from_gae}

然后传入:

template_values = {'lists': {'list_from_gae': list_from_gae}}

并通过以下方式解决这些问题:

{% for i in lists[my_argument] %}