我在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.
).
答案 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出现。