Django模板multidimensionnal数组访问for循环

时间:2015-07-08 16:17:59

标签: python arrays django for-loop django-templates

我在Django模板中遇到了一个恼人的问题。 我有一个三维数组,并希望在我的模板中循环遍历第一个维度:

{% for item in array %} {{array.i.0.0}} {% endfor %}

现在,我知道这不起作用,因为我未定义,但我尝试使用{{forloop.counter0}}无效,并且正在寻找一种类似的简单方法。
我发现this link使用模板过滤器......它是唯一的解决方案吗?

谢谢。

2 个答案:

答案 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;让它工作: