for循环中的Django模板多维数组访问
Posted
技术标签:
【中文标题】for循环中的Django模板多维数组访问【英文标题】:Django template multidimensionnal array acces in for loop 【发布时间】:2015-09-26 16:35:30 【问题描述】:我在 Django 模板中遇到了一个烦人的问题。 我有一个 3 维数组,并希望像这样循环遍历模板中的第一个维度:
% for item in array % array.i.0.0 % endfor %
现在,我知道这行不通,因为 i 未定义,但我尝试使用 forloop.counter0
无济于事,并且正在寻找一种类似的简单方法。
我发现this link 使用了模板过滤器...这是唯一的解决方案吗?
谢谢。
【问题讨论】:
我不确定我是否理解你在这里想要做什么。你不能用 item.0.0
访问它吗?
@HåkenLid 它似乎不起作用。也许我做错了什么。
你能把逻辑写在python代码中,这样我们就可以理解你在做什么?另外,您的数组是哪种数据类型?它是一个 numpy 数组吗?
@HåkenLid 这是一个嵌套数组:array = [[['value' for i in range(x)] for j in range(y)] for k in range(z)]
【参考方案1】:
试试这个:
首先,您要定义两个模板过滤器,方便您将它们放在您的views.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 %
您可能必须使用“with”才能使其工作:
【讨论】:
【参考方案2】:我确实尝试了原始帖子中链接中的自定义模板过滤器解决方案,但一开始失败了。我收到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 %
我仍然不知道是否存在更简单的解决方案,但它可以工作并且就我而言非常干净。
【讨论】:
以上是关于for循环中的Django模板多维数组访问的主要内容,如果未能解决你的问题,请参考以下文章
如何循环访问和访问多维和关联数组中的各种元素? PHP,JSON 或 XML