索引Django模板的参考列表项

时间:2015-03-23 00:43:30

标签: python django django-forms django-templates

我有一个名为 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. 表单列表的第一个元素放在div标签中,并使用class =“image”。
  2. 将其余元素放入div标签中,并使用class =“questions”
  3. 关于如何通过django模板中的索引引用列表项有SO questions,但forms.0.as_p不会为我呈现任何内容。另外,如何从表单(类似表单[1:])获取项目的子列表?

    修改

    虽然下面已经正确回答了这个问题,但我会添加另一种方法来使用切片。

    <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>
    

1 个答案:

答案 0 :(得分:1)

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

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

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