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

时间:2015-10-21 21:50:47

标签: python arrays python-3.x django-templates

我在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.
       ).

1 个答案:

答案 0 :(得分:1)

您正在输出queryset / iterable,即instance

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

for的语法与python' s相同(参见this helps

所以只需替换

{{instance}}

{{name}}

在模板中,你应该得到所需的输出

这意味着模板应该是

(:,

{% for name  in instance  %}
       {{name}}
{% endfor %}

 My name is {{my_name}}.
(:,

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