按索引 Django 模板引用列表项

Reference list items by index Django template

我有一个名为 forms 的列表,我正在将其传递给 Django (1.5.1) 模板:

<div class="content">
{% if forms %}
  <form method="POST" enctype="multipart/form-data" class="survey">
   <div class="image">
     {{ forms.0.as_p }}
    </div>
    <div class="questions">
    {% for form in forms %}
      {{ form.as_p }}
    </div>
    {% endfor %}
    <input type="submit" value="Submit Survey"/>
  </form>
{% endif %}
<div class="content">

我想做两件事:

  1. forms 列表的第一个元素放入带有 class="image".
  2. 的 div 标签中
  3. 将其余元素放在 div 标签内 class="questions"

SO questions 关于如何在 django 模板中通过索引引用列表项,但 forms.0.as_p 没有为我呈现任何内容。此外,如何从 forms(类似于 forms[1:])中获取项目的子列表?

编辑

虽然问题已在下面得到正确回答,但我将添加另一种使用 slice 的方法。

<form method="POST" enctype="multipart/form-data" class="survey">
 <div class="image">
  {{ forms.0.as_p }}
 </div>
 <div class="questions">
  {% with myforms=forms|slice:"1:"%}
   {% for form in myforms %}
      {{ form.as_p }}
   {% endfor %}
  {% endwith %}
 </div>

使用forloop.first变量确定列表中的第一个表格:

{% for form in forms %}
<div class="{{ forloop.first|yesno:'image,question' }}">
   {{ form.as_p }}
</div>
{% endfor %}

P.S。在这种情况下您不需要它,但要在模板中获取子列表,您可以使用 slice 模板过滤器。