在django模板中动态形成变量

时间:2013-08-07 06:34:40

标签: django django-templates

我有一个像

这样的项目的字典
{'Switch_all': 'N/A', 'Router_down': 'N/A', 'Switch_down': 'N/A', 'Router_all': 'N/A'}

我想通过使用密钥ex:Switch_all在django模板中迭代这个字典。

如果我给出像Switch_all这样的密钥

,我可以从字典中获取数据

问题是我需要从另一个列表动态地形成这个变量。例如,列表将包含以下数据

['Swich','Router']

我必须迭代这个列表,并附加像_up,_down这样的字符串,以形成新的变量,这是字典中的一个键。

现在我尝试使用自定义模板过滤器,但仍然发现传递两个参数有困难

我在模板中包含的代码是

{{ value|dyndictval:header,"_up" }}

在上面的代码值中是字典,header是变量,它接受像Switch,Router这样的参数,当附加第二个参数(这里是'_up')将形成字典中的键(值)。

自定义过滤器代码是

def dyndictval(d, key1):
keys = key1.split(',')
return d.get(keys[0]+keys[1],'')

我已经通过使用使用with标签创建的单独变量来克服了这个要求,并使用相同的方法将参数传递给自定义过滤器

{% with header|add:"_up" as templatevar %}>>>>{{templatevar}}<<<<
                    {{ value|dyndictval:templatevar }}
                    {% endwith %}

1 个答案:

答案 0 :(得分:0)

这应该在视图中完成。模板应仅包含最小逻辑。

在视图中,使用python可以非常轻松地完成。如果您需要帮助,请将代码发布为问题的编辑,人们会提供帮助。