如何 assemble Django 模板语言中的变量名?

How to assemble a variable name in Django templating language?

我正在尝试 assemble Django 模板中的变量:
obj.length.forloop.counter 其中 foorloop.counter 应该 return 数字。
例如 obj.length.1 然后 obj.length.2 等等...

我试过添加过滤器: obj.length|add:forloop.counter 但是 return 什么也没做。
有什么方法可以 assemble 像 django 模板语言中那样的变量名?

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

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

然后您可以像在模板中那样使用它:

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

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

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