如何 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 }}
话虽这么说,我想知道你是否不能直接迭代 obj
或 obj.length
本身。你确定你不能在你的模板中做这样的事情吗?那会更干净。
{% for item in obj %}
{% comment %}Do something with item{% endcomment %}
{% endfor %}
我正在尝试 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 }}
话虽这么说,我想知道你是否不能直接迭代 obj
或 obj.length
本身。你确定你不能在你的模板中做这样的事情吗?那会更干净。
{% for item in obj %}
{% comment %}Do something with item{% endcomment %}
{% endfor %}