以对形式呈现字段

时间:2012-12-09 20:03:07

标签: python django forms

 <form action="/contact/" method="post">
 {% for field in form %}
 <div class="fieldWrapper">
    {{ field.errors }}
    {{ field.label_tag }}: {{ field }}
 </div>
{% endfor %}
<p><input type="submit" value="Send message" /></p>
</form>

代码与每行数据条目完美配合,但为了节省空间,我希望每行渲染2组数据。(即每行2个字段,并使用<br>)< / p>

应该看起来像

field1.tag : field1,   field2.tag: field2.

或类似的解决方案

1 个答案:

答案 0 :(得分:1)

最佳解决方案:造型

最佳解决方案是在样式级别上解决它。

就像那样(see demo):

  • 模板:

    <form action="/contact/" method="post">
        {% for field in form %}
            <div class="fieldWrapper">
                {{ field.errors }}
                {{ field.label_tag }}: {{ field }}
            </div>
        {% endfor %}
        <p><input type="submit" value="Send message" /></p>
    </form>
    
  • CSS:

    .fieldWrapper {
        float: left;
        width: 50%;
    }​
    

替代解决方案:文档结构

或者,您可以使用更复杂的模板代码来生成行和列。为此,您可以使用Django's for loop variables,例如:

  • forloop.counter(或forloop.counter0) - 包含循环中当前元素的编号,
  • forloop.first - True如果当前元素是第一个,则False
  • forloop.last - True如果当前元素是最后一个元素,则False

但是应该在样式层上解决演示问题(“节省屏幕空间”)。