neu*_*rix 1 forms django templates for-loop
我有一个包含n个字段的表单.前4个字段应该在我的模板中以不同的形式显示.因此,我想知道我是否可以以某种方式循环前4个字段,结束循环并继续在模板中的其余字段上循环.
<table>
{% for field in form %}
{% if forloop.counter == 4 <<< Break here >>>%}
<tr>
<td> {{ field.label_tag }} </td>
<td> {{ field }} </td>
</tr>
{% endfor %}
</table>
.... Different code ....
<table>
{% for field in form %} <<< Continue here >>>
<tr>
<td> {{ field.label_tag }} </td>
<td> {{ field }} </td>
</tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
我找到了这段代码,但我想知道我是否能够以不同的方式构建模板,或者我是否错过了Django 1.3中允许现在断开循环的一些新变化.
通常情况下,我会将表单分成两个单独的表单,但我想在其他模板中重用表单定义,因此我希望将所有信息保存在一个表单中.
感谢您的意见!
它与其他"无法在模板中执行"问题的解决方案相同:在视图中执行此操作.我真的相信增加的复杂性和逻辑进一步分离到多个代码区域(标签,新文件等)只会损害可维护性.只有当事情确实变得重复,不可读等时,我才会分开/实施DRY.
其他一切都是过早的优化.
Django在提交表单时不会知道差异.
fields = list(form)
part1, part2 = fields[:4], fields[4:]
{% for field in part1 %}{{ field }}{% endfor %}
...
{% for field in part2 %}{{ field }}{% endfor %}
Run Code Online (Sandbox Code Playgroud)