1

我有一本像

{'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" }}

在上面的代码中,value 是字典,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 %}
4

1 回答 1

0

这应该在视图中完成。模板应该只包含最少的逻辑。

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

于 2013-08-07T08:17:24.430 回答