提问者:小点点

如何在Django模板语言中组装变量名?


我正在尝试以这种方式在Django模板中组装一个变量:
obj. long.forloop.counter其中foorloop.counter应该返回数字。
例如obj.long.1然后obj.long.2等等…

我尝试了添加过滤器:obj. long|add:forloop.counter但根本没有返回任何内容。
有什么方法可以在django模板语言中组装这样的变量名吗?


共1个答案

匿名用户

您可以注册一个自定义过滤器(参见留档)来实现您想要的:

@register.filter()
def get(obj, attr):
    if hasattr(obj, attr):
        return getattr(obj, attr)
    return obj[attr]

然后,您可以在模板中这样使用它:

{{ obj.length|get:forloop.counter }}

话虽如此,我想知道您是否不能直接迭代objobj. long本身。你确定你不能在你的模板中做这样的事情吗?那会更干净。

{% for item in obj %}
    {% comment %}Do something with item{% endcomment %}
{% endfor %}