我定义了一个字符串类型的参数。
% 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是变量而不是字符串文字?
答案 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] %}