Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相当于python;在「;Django模板中的循环_Django_Django Templates - Fatal编程技术网

相当于python;在「;Django模板中的循环

相当于python;在「;Django模板中的循环,django,django-templates,Django,Django Templates,我试图在django模板中迭代列表。在python中,它如下所示,并且可以正常工作: l=[lots ot touples] for li in range(len(l)): print(l[li]) 但在django模板中,它不起作用。我的问题是:django模板中迭代列表最简单的等价物是什么 我的django模板: <html> <body> {% for w in l %} <li>{{ w }}</li> {% endfor

我试图在django模板中迭代列表。在python中,它如下所示,并且可以正常工作:

l=[lots ot touples]
for li in range(len(l)):
    print(l[li])
但在django模板中,它不起作用。我的问题是:django模板中迭代列表最简单的等价物是什么

我的django模板:

<html>
<body>
{% for w in l %}
  <li>{{ w }}</li>
{% endfor %}
</body>
</html>
<html>
<body>
{% for item in l %}
  <li>{{ item }}</li>
{% endfor %}
</body>
</html>
我希望列表中的每一项都分配给touple。 我想做的是分配touple,例如:

touple1=('From1','subject1','Thu,2015年11月12日09:46:34+0100')

所以我以后可以叫“from”、“subject”或“date”

问候

也许我会用另一种方式来表达,让它更清楚: 用于循环遍历电子邮件(Touple列表)

(……)

等等

解决了。谢谢大家的帮助。每一个解决方案都对我有帮助。我想标记两个答案(如果可能的话)作为一个非常有用的方法,向我展示解决同一问题的不同方法。我想说的是,每一个帮助对我都是非常有用的。
你介意我把阿拉斯代尔和诺亚的答案记为正确答案吗(不知道我能记多少)

您可以做一件非常类似的事情:

如果是元组,则可以将值解压为多个变量

{% for item1, item2 in items_list %}

无需将
range
len
一起使用,就可以像在C或JavaScript中那样进行操作,只需对其进行迭代:

l=[some array elements]
for item in l:
    print(item)
在模板中:

<html>
<body>
{% for w in l %}
  <li>{{ w }}</li>
{% endfor %}
</body>
</html>
<html>
<body>
{% for item in l %}
  <li>{{ item }}</li>
{% endfor %}
</body>
</html>
编辑:

l=[lots ot touples]
如果元组只有两项,请坚持@danielfranca的答案:

{% for item1, item2 in items_list %}
    ....
{% endfor %}
如果元组的长度是可变的,则必须再次迭代:

{% for tup in items_list %}
    {% for item in tup %}
        <li>{{ item }}</li>
    {% endfor %}
{% endfor %}
{items\u list%}
{tup%中项目的%s}
  • {{item}}
  • {%endfor%} {%endfor%}
    您的解决方案看起来是正确的。您已经按照文档中所示正确地构建了它:

    但是,您正在引用的列表可能不在模板的上下文中,因此模板无法看到它。确保将列表添加到上下文中:

    鉴于列表包含元组,您需要访问元组的每个元素。如果元组完全相同,并且每个元组正好包含三个项,则可以将它们解包:

    <html>
    <body>
    {% for from, subject, date in l %}
      <li>{{ from }}, {{ subject }}, {{ date }}</li>
    {% endfor %}
    </body>
    </html>
    
    然后将新列表传递给模板上下文

    <html>
    <body>
    {% for email in email_list %}
      <li>{{ email.from }}, {{ email.subject }}, {{ email.date }}</li>
    {% endfor %}
    </body>
    </html>
    
    
    {电子邮件列表%中的电子邮件为%0}
    
  • {{email.from}、{email.subject}、{{email.date}
  • {%endfor%}
    给定以下元组列表:

    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')
    ]
    
    您可以循环遍历元组,并使用
    .0
    .2
    按索引访问元素:

    {% for email in emails %}
    {{ email.0 }} - {{ email.1 }} - {{ email.2 }}
    {% endfor %}
    
    或者,您可以解压缩元组变量:

    {% for from, subject, date in emails %}
    {{ from }} - {{ subject }} - {{ date }}
    {% endfor %}
    
    顺便说一句,您的Python代码不是很像Python。而不是在一个范围内循环

    emails = [...]
    for li in range(len(emails)):
    print(emails[li])
    
    您可以直接在列表上循环

    for email in emails:
        print(emails)
    
    您可以执行与Django模板中相同的解包操作

    for from, sender, date in emails:
        print(from, sender, date)
    

    感谢您的快速回答,但是我的列表(l)中充满了touple(不是名字),所以我必须通过list.count或类似的方式对它们进行迭代。不管怎样,我知道这个解决方案:我今天整天都在谷歌上搜索。如果是元组,你可以编写一个与我的第二个例子非常相似的代码。我刚刚更新了答案。所有元组的长度都一样吗?否则,该示例将不会使工作元组始终具有3个字段(from、subject、date)。考虑到python可能会工作,但这不是您应该做的(它会创建不必要的列表和查找…)您实际上想做什么?迭代元组列表?我的列表包含电子邮件。每个列表[1]包含1封邮件,如此一来,列表[2]包含2封邮件。每封邮件(touple)都包含“发件人邮件”、“主题邮件”和“日期邮件”标题。我认为一切都进展顺利。实际上,这个列表包含电子邮件消息,所以若我使用“for”语句,我会得到类似于:“(mail1-from,mail1-subject,mail1-date)”的内容,所以我想去掉括号
    {% for email in emails %}
    {{ email.0 }} - {{ email.1 }} - {{ email.2 }}
    {% endfor %}
    
    {% for from, subject, date in emails %}
    {{ from }} - {{ subject }} - {{ date }}
    {% endfor %}
    
    emails = [...]
    for li in range(len(emails)):
    print(emails[li])
    
    for email in emails:
        print(emails)
    
    for from, sender, date in emails:
        print(from, sender, date)