jinja变量可以作为参数传递给for循环吗?
我定义了一个字符串类型的参数。
% 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 个回答
1
你不能这样做,除非你额外花点功夫把上下文变成一个字典。可以看看这个链接:如何从Jinja 2模板中获取当前变量的列表? 一旦你有了这个上下文,就可以用 context()[my_argument]
来访问。
更好的做法是把 list_from_gae
放在一个传给模板的 字典 里;这样你就可以用这个字典来访问那个名字。
比如,如果你现在传入的是:
template_values = {'list_from_gae': list_from_gae}
那么可以改成传入:
template_values = {'lists': {'list_from_gae': list_from_gae}}
然后用以下方式来访问:
{% for i in lists[my_argument] %}