我在Django模板中遇到了一个恼人的问题。 我有一个三维数组,并希望在我的模板中循环遍历第一个维度:
{% for item in array %} {{array.i.0.0}} {% endfor %}
现在,我知道这不起作用,因为我未定义,但我尝试使用{{forloop.counter0}}
无效,并且正在寻找一种类似的简单方法。
我发现this link使用模板过滤器......它是唯一的解决方案吗?
谢谢。
答案 0 :(得分:0)
我确实从原始帖子中的链接尝试了自定义模板过滤器解决方案,但最初失败了。我得到一个带有{{array|access:key.0.0}}
的ValueError可能是因为整个“key.0.0”位被发送到过滤器。因此,使用“with”模板标签,我能够达到我想要的效果
{% load filters %} // File containing my custom filters
{% with array|access:forloop.counter0 as index %}
{{index.0.0}}
{% endwith %}
我仍然不知道是否存在更简单的解决方案,但就我而言,它的工作原理非常干净。
答案 1 :(得分:0)
试试这个:
首先,您要定义两个模板过滤器,以方便您的视图.py
@register.filter
def index(List, i):
return List[int(i)]
@register.filter
def entry_num_array(List):
return range(len(List))
然后在你的模板中
{% for inner_array1 in main_array %}
{% for counter1 in inner_array1|entry_num_array %}
{{inner_array1|index:counter1}}|
{%for inner_array2 in inner_array1 %}
{% for counter1 in inner_array1|entry_num_array %}
{{inner_array2|index:counter2}}|
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
您可能必须使用"和#34;让它工作: