ฉันมีรายการในแม่แบบ Django ของฉัน ฉันต้องการทำอะไรบางอย่างเฉพาะเมื่อขนาดของรายการใหญ่กว่าศูนย์
ฉันได้ลองmyList|length
แล้วmyList|length_is
แต่พวกเขาก็ไม่ประสบความสำเร็จ
ฉันค้นหาไปทั่วแล้วและไม่เห็นตัวอย่างใด ๆ ฉันจะตรวจสอบสิ่งนี้ได้อย่างไร
ฉันมีรายการในแม่แบบ Django ของฉัน ฉันต้องการทำอะไรบางอย่างเฉพาะเมื่อขนาดของรายการใหญ่กว่าศูนย์
ฉันได้ลองmyList|length
แล้วmyList|length_is
แต่พวกเขาก็ไม่ประสบความสำเร็จ
ฉันค้นหาไปทั่วแล้วและไม่เห็นตัวอย่างใด ๆ ฉันจะตรวจสอบสิ่งนี้ได้อย่างไร
คำตอบ:
ดูhttps://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : เพียงใช้เพื่อทำซ้ำตัวอย่าง:
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% else %}
No athletes.
{% endif %}
length
กรองยังดูเหมือนว่าจะทำงานในบล็อกเงื่อนไข เช่น{% if athlete_list|length > 1 %}...{% endif %}
หากคุณกำลังใช้ Django เมื่อเร็ว ๆ นี้รายการเปลี่ยนแปลง9530 ได้เปิดตัวบล็อก {% empty%} ที่อนุญาตให้คุณเขียน
{% for athlete in athlete_list %}
...
{% empty %}
No athletes
{% endfor %}
มีประโยชน์เมื่อสิ่งที่คุณต้องการเกี่ยวข้องมีการวนซ้ำในรายการที่ไม่ว่างเปล่า
รายการถือว่าเป็นFalse
หากไม่มีองค์ประกอบดังนั้นคุณสามารถทำสิ่งนี้:
{% if mylist %}
<p>I have a list!</p>
{% else %}
<p>I don't have a list!</p>
{% endif %}
หากคุณลอง myList | length และ myList | length_is และไม่ได้ผลลัพธ์ที่ต้องการคุณควรใช้ myList.count
คุณสามารถลองด้วย:
{% if theList.object_list.count > 0 %}
blah, blah...
{% else %}
blah, blah....
{% endif %}
การเก็บเงินไม่มีวงเล็บเหลี่ยม
{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}
ฉันต้องการความยาวการรวบรวมเพื่อตัดสินใจว่าฉันควรเรนเดอร์ตารางหรือไม่ <thead></thead>
แต่ไม่รู้ว่าทำไม@Django 2.1.7คำตอบที่เลือกจะล้มเหลว (ว่าง) forloop
หลังจากนั้น
ฉันต้องใช้{% if forloop.first %} {% endif %}
เพื่อเอาชนะ:
<table>
{% for record in service_list %}
{% if forloop.first %}
<thead>
<tr>
<th>日期</th>
</tr>
</thead>
{% endif %}
<tbody>
<tr>
<td>{{ record.date }}</td>
</tr>
{% endfor %}
</tbody>
</table>