假设我有两个变量传递给模板:var_a
和var_b
。有没有办法动态地解决它们,换句话说,从字符串构造变量名称?像PHP的$$var_name
。
例如,如果我的letter
变量包含值 a
或 b
,我想通过写下类似的东西来渲染var_a
{{"var_"|some_sort_of_concat:letter}}
并获取var_a
或var_b
的值,具体取决于letter
的值。这样的事情有可能吗?
答案 0 :(得分:0)
我的意见是,如果你根据已知的事情做出决定,那么在你渲染模板之前就应该进行计算。
你也可以使用一个字典,即var = {" a":" foo"," b":" bar"} 您无法直接在模板中对dicts进行索引,因此根据您要尝试实现的内容,无论是迭代dict还是使用this question中的模板过滤器,here都是指向该票证的链接
答案 1 :(得分:0)
您可以使用变量名称作为键及其值作为值创建字典,然后创建模板过滤器以通过给定变量名称获取字典值。变量名也可以是从列表或其他任何内容中获取的变量:
d = {"var_a": "a", "var_b": "b"}
将d
发送到模板并创建模板过滤器“get_dictionary_value
”:
def get_dictionary_value(d, key):
try:
if (key in d):
return d[key]
except:
pass
return ""
然后在模板中:
{{ d|get_dictionary_value:"var_a" }}
或者:
{% for key in l %}
{{ d|get_dictionary_value:key }}
{% endfor %}
顺便说一下,d [key]的值也可以是字典,你可以再次应用这个过滤器(并再次......):
{{ d|get_dictionary_value:key1|get_dictionary_value:key2 }}