我正在通過使用for回圈并遍歷欄位來在 Django html 模板中呈現表單。我想在我的表單中添加一些部分和標題,那么有沒有辦法“切片”表單欄位或以其他方式迭代地只顯示欄位的一個子部分?
就像是
{% for field in form.slice(0, 5) %}
<!-- render first 5 fields -->
<h2>Section 2</h2>
<p>Some text about next section</p>
{% for field in form.slice(5, 10) %}
<!-- render the next 5, etc. -->
我知道最壞的情況是手動渲染每個欄位,但它是一個非常長的形式。這是我現有的表單代碼。
{% for field in form %}
<div class="field">
<label class="label" for="{{field.id_for_label}}">
{{field.label}}
</label>
<div class="control">{{field}}</div>
{% if field.help_text %}
<p class="help">{{field.help_text}}</p>
{% endif %}
<ul class="errorlist">
{% for error in field.errors %}
<li class="is-danger help">{{error}}</li>
{% endfor %}
</ul>
</div>
{% endfor %}
uj5u.com熱心網友回復:
您可以使用 Djangoforloop.counter0或forloop.counter變數。第一個跟蹤回圈內從索引 0 開始的迭代,第二個索引從 1 開始的迭代(參見本節底部,參見本節底部https://docs.djangoproject.com/en/ 4.0/ref/templates/builtins/# for 更多):
{% for field in form %}
{% if forloop.counter0 == 5 %}
<h2>Section 2</h2>
<p>Some text about section 2</p>
{% elif forloop.counter0 == 8 %}
<h2>Section 3</h2>
<p>Some text about section 3</p>
{% endif %}
<div class="field">
<label class="label" for="{{field.id_for_label}}">
{{field.label}}
</label>
<div class="control">{{field}}</div>
{% if field.help_text %}
<p class="help">{{field.help_text}}</p>
{% endif %}
<ul class="errorlist">
{% for error in field.errors %}
<li class="is-danger help">{{error}}</li>
{% endfor %}
</ul>
</div>
{% endfor %}
您仍然需要手動檢查這些值。例如,如果您想以某種方式添加部分內容,您可以每 5 個欄位迭代一次內容,您可以利用divisibleby并Django-Mathfilters劃分:
{% for field in form %}
{% if forloop.counter0|divisibleby:5 %}
<h2>Section {{ forloop.counter0|div:5}}</h2>
<p>Some text about section {{ forloop.counter0|div:5}}</p>
{% endif %}
<div class="field">
<label class="label" for="{{field.id_for_label}}">
{{field.label}}
</label>
<div class="control">{{field}}</div>
{% if field.help_text %}
<p class="help">{{field.help_text}}</p>
{% endif %}
<ul class="errorlist">
{% for error in field.errors %}
<li class="is-danger help">{{error}}</li>
{% endfor %}
</ul>
</div>
{% endfor %}
有關更多參考資料,您可以在 Django 模板中查看 Modulus %以了解divisibleby和Is there a filter for divide for Django Template? 獲取有關如何在 Django 模板中除數的其他方法!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/468029.html
