比方说,我有两个变量传递给模板:var_a
和var_b
。有没有办法来动态地解决它们,换句话说,从字符串构造变量名?像PHP的$$var_name
。从字符串构造变量名称
举例来说,如果我有一个letter
变量与保存价值a
或b
,我想通过写类似的东西来渲染var_a
:
{{"var_"|some_sort_of_concat:letter}}
,并得到var_a
值或var_b
取决于letter
的值。这样的事情可能吗?
比方说,我有两个变量传递给模板:var_a
和var_b
。有没有办法来动态地解决它们,换句话说,从字符串构造变量名?像PHP的$$var_name
。从字符串构造变量名称
举例来说,如果我有一个letter
变量与保存价值a
或b
,我想通过写类似的东西来渲染var_a
:
{{"var_"|some_sort_of_concat:letter}}
,并得到var_a
值或var_b
取决于letter
的值。这样的事情可能吗?
我的意见是,如果您基于已知的事情做决定,那么计算应该在您呈现模板之前发生。
您也可以使用字典即var = {“a”:“foo”,“b”:“bar”} 您不能直接在模板中索引字典,因此取决于您要实现的目标或者迭代字典或使用模板过滤器,如this question,here是票证的链接。
您可以创建一个字典,其变量名称为键和它们的值作为值,然后创建一个模板过滤器以通过给定变量名称获取字典值。变量名,也可以从列表或其他任何所作的可变:
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 [关键]的值也可以是一本字典,你可以再次申请该过滤器(并再次...):
{{ d|get_dictionary_value:key1|get_dictionary_value:key2 }}
您连答案一无所知说Django – MeLight 2014-10-08 10:42:24
投票重新开放。这不是一个可以用templatefilter btw来完成的事情,但你可以使用templatetag来完成。 – Wolph 2014-10-08 10:53:22
这里有一个类似的问题:http://stackoverflow.com/questions/17148544/django-template-dynamic-variable-name – Wolph 2014-10-08 10:54:27