如何迭代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中数组中的所有值的主要内容,如果未能解决你的问题,请参考以下文章