例如我有一個10個對象的列表,但我只想得到最後5個或前5個對象。如何做一個FOR或循環在Django Template Languge上的X和Y列表的結尾索引?
{% for x in objects %}
.....first 5 objects......
{% endfor %}
{% for x in objects %}
.....last 5 objects......
{% endfor %}
例如我有一個10個對象的列表,但我只想得到最後5個或前5個對象。如何做一個FOR或循環在Django Template Languge上的X和Y列表的結尾索引?
{% for x in objects %}
.....first 5 objects......
{% endfor %}
{% for x in objects %}
.....last 5 objects......
{% endfor %}
第一種方法(forloop.counter
):
{% for x in objects %}
{% if forloop.counter <= 5 %}
access first 5 objects
{% else %}
access last 5 objects
{% endif %}
{% endfor %}
方法二:
# views.py
def my_view(request):
first_five_obj = MyModel.objects.all()[:5]
last_five_obj = MyModel.objects.all()[-5:]
return render(request, 'template.html', locals())
<!-- template.html -->
{% for x in first_five_obj %}
.....first 5 objects......
{% endfor %}
{% for x in last_five_obj %}
.....last 5 objects......
{% endfor %}
您可以考慮使用自定義模板標籤。
可以通過對象循環:
{% for x in objects %}
{% if forloop.counter <= 5 %}
# ....do something....
{% endif %}
{% endfor %}
{% for x in objects %}
{% if forloop.revcounter <= 5 %}
# ....do something....
{% endif %}
{% endfor %}
你可以得到的物品直接(假設物體的長度不會在列表中顯示最近5時更改。):
{{ objects.0 }}
{{ objects.1 }}
{{ objects.2 }}
...
{{ objects.7 }}
{{ objects.8 }}
{{ objects.9 }}
第二個它幫助我瞭解我正在開發的其他東西,但注意到它的頁面表現更慢,但謝謝。 –
謝謝,我更喜歡第一種方法,其他方法都沒有,我將添加其他for循環條件{%if forloop.counter> 5%} –
當然!如果這對你有用。 –