adm*_*tad 1 django django-templates
我正在尝试迭代Django模板中的列表。在python中,它看起来如下所示,并且可以正常工作:
l=[lots ot touples]
for li in range(len(l)):
print(l[li])
Run Code Online (Sandbox Code Playgroud)
但是在Django模板中它不起作用。我的问题是:Django模板中的迭代列表最简单的等效方法是什么?
我的Django模板:
<html>
<body>
{% for w in l %}
<li>{{ w }}</li>
{% endfor %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
先感谢您
PS我已经添加了touples,以列出确切的问题是另外一个PS
www网站的输出(我正在显示gmail形式的未读电子邮件)如下所示:
('From1', 'subject1', 'Thu, 12 Nov 2015 09:46:34 +0100')
('From2', 'subject2', 'Thu, 12 Nov 2015 13:48:58 +0100')
('From3', 'subject3', 'Thu, 12 Nov 2015 14:12:34 +0100')
Run Code Online (Sandbox Code Playgroud)
我希望列表中的每个项目都分配给touple。我想做的就是分配touple,例如:
touple1 =('From1','subject1','Thu,12 Nov 2015 09:46:34 +0100')
所以我以后可以叫“来自”,“主题”或“日期”
问候
也许我将以另一种方式使其更清楚地显示它:for循环遍历电子邮件(touples列表)
email1 = list[1] //touple
email2 = list[2] //touple
Run Code Online (Sandbox Code Playgroud)
(...)
from1 = email1[0]
subject1 = email1[1]
date1 = email1[3]
Run Code Online (Sandbox Code Playgroud)
等等。
解决了。谢谢大家的帮助。每个解决方案对我来说都是有益的。我想标记两个答案(如果可能的话)对我来说非常有用,它显示了解决同一问题的不同方法。我想提一下,每一个帮助对我来说都是非常有用的。您介意我是否将Alasdair和Noah答案标记为正确答案(不知道我可以标记多少个答案)?
给定以下元组列表:
emails = [
('From1', 'subject1', 'Thu, 12 Nov 2015 09:46:34 +0100')
('From2', 'subject2', 'Thu, 12 Nov 2015 13:48:58 +0100')
('From3', 'subject3', 'Thu, 12 Nov 2015 14:12:34 +0100')
]
Run Code Online (Sandbox Code Playgroud)
您可以遍历元组,并使用.0或.2通过索引访问元素:
{% for email in emails %}
{{ email.0 }} - {{ email.1 }} - {{ email.2 }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
或者,您可以解压缩元组变量:
{% for from, subject, date in emails %}
{{ from }} - {{ subject }} - {{ date }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您的Python代码不是很pythonic。而不是在范围内循环,
emails = [...]
for li in range(len(emails)):
print(emails[li])
Run Code Online (Sandbox Code Playgroud)
您可以直接遍历列表
for email in emails:
print(emails)
Run Code Online (Sandbox Code Playgroud)
您可以执行与Django模板相同的解压缩。
for from, sender, date in emails:
print(from, sender, date)
Run Code Online (Sandbox Code Playgroud)