如何迭代Django中数组中的所有值

Posted

技术标签:

【中文标题】如何迭代Django中数组中的所有值【英文标题】:How iterate over all the values in an array in Django 【发布时间】:2016-01-21 01:48:23 【问题描述】:

我在 python 中有一个名称数组,我想使用 Django 模板显示它们。我知道可以使用支持循环的标签,但它们有一个我不熟悉的独特语法。

我也不想使用instance.0、instance.1等等。我需要对任何大小的数组进行扩展

Django 模板代码

(:,

% for name  in instance  %
       instance         
%endfor%

 My name is my_name.
(:,

Python 代码

from django.template import Template, Context
from django.conf import settings

settings.configure()


t=Template(The above section)
dtype='names': ['name','offset'],
       'formats':['U20,U20']
       

instance = np.zeros(5,dtype='U20')
instance[0]=('John')
instance[1]=('Tim')
instance[2]=('Sarah')

name="adrian"


c=Context("instance":instance, "my_name":name)
print(t.render(c))

电流输出

(:,

                ['John' 'Tim' 'Sarah' '' '']


                ['John' 'Tim' 'Sarah' '' '']


                ['John' 'Tim' 'Sarah' '' '']


                ['John' 'Tim' 'Sarah' '' '']


                ['John' 'Tim' 'Sarah' '' '']


       My name is adrian.
       ).

期望的输出

(:,
        i=0

               [John]


               [Tim]


               [Sarah]




       My name is adrian.
       ).

【问题讨论】:

而不是instance,输出name 【参考方案1】:

您正在输出查询集/可迭代,即instance

相反,您需要输出它的每个元素,即name,正如您在for 循环中正确声明的那样。

for的语法和python的一样(看this helps)

所以替换

instance

name

在模板中,你应该得到想要的输出

这意味着模板应该是

(:,

% for name  in instance  %
       name
% endfor %

 My name is my_name.
(:,

顺便说一句,我可以看到查询集有五个元素(同一行重复了五次,因为循环在五个元素上运行),但最后两个没有名字,因为只有 John、Tim 和 Sarah 出现。

【讨论】:

谢谢!现在我有了一个新的用例。如何让 for 循环打印出来自 2 个不同数组的值?像 for name in instance name Last_name 要迭代两个不同的序列,将每个元素配对,您可以使用zip。例如% for name, last_name in zip(arr1, arr2) % name last_name % endfor % 我认为不可能从 for 循环中访问 zip。所有计算都必须在模板之外完成。我也认为这是我以更好的方式提出的问题。 ***.com/questions/33286510/… 好的,但是如何将 Context() 方法与组合数组一起使用? 我正在查看您的新问题。也许你没有必要改变太多。在那里查看我的评论

以上是关于如何迭代Django中数组中的所有值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 模板中迭代字典的列表值

如何制作用户定义的矩形数组并对其进行迭代

如何在c ++中迭代数组中的唯一元素[关闭]

如何在Django视图中使用for循环返回每次迭代[关闭]

Django:如何在我的视图中逐个迭代一个对象?

如何通过php中的mysql查询逐行迭代