我正在尝试以这种方式在Django模板中组装一个变量:obj. long.forloop.counter
其中foorloop.counter
应该返回数字。
例如obj.long.1
然后obj.long.2
等等…
我尝试了添加过滤器:obj. long|add:forloop.counter
但根本没有返回任何内容。
有什么方法可以在django模板语言中组装这样的变量名吗?
您可以注册一个自定义过滤器(参见留档)来实现您想要的:
@register.filter()
def get(obj, attr):
if hasattr(obj, attr):
return getattr(obj, attr)
return obj[attr]
然后,您可以在模板中这样使用它:
{{ obj.length|get:forloop.counter }}
话虽如此,我想知道您是否不能直接迭代obj
或obj. long
本身。你确定你不能在你的模板中做这样的事情吗?那会更干净。
{% for item in obj %}
{% comment %}Do something with item{% endcomment %}
{% endfor %}