从字符串构造变量名称

时间:2014-10-08 10:19:01

标签: django django-templates

假设我有两个变量传递给模板:var_avar_b。有没有办法动态地解决它们,换句话说,从字符串构造变量名称?像PHP的$$var_name

例如,如果我的letter变量包含值 a b ,我想通过写下类似的东西来渲染var_a

{{"var_"|some_sort_of_concat:letter}}

并获取var_avar_b的值,具体取决于letter的值。这样的事情有可能吗?

2 个答案:

答案 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 }}