ฉันจะตรวจสอบขนาดของชุดสะสมในแม่แบบ Django ได้อย่างไร


147

ฉันมีรายการในแม่แบบ Django ของฉัน ฉันต้องการทำอะไรบางอย่างเฉพาะเมื่อขนาดของรายการใหญ่กว่าศูนย์

ฉันได้ลองmyList|lengthแล้วmyList|length_isแต่พวกเขาก็ไม่ประสบความสำเร็จ

ฉันค้นหาไปทั่วแล้วและไม่เห็นตัวอย่างใด ๆ ฉันจะตรวจสอบสิ่งนี้ได้อย่างไร

คำตอบ:


279

ดูhttps://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : เพียงใช้เพื่อทำซ้ำตัวอย่าง:

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% else %}
    No athletes.
{% endif %}

| length ฉันมักจะสับสนกับ jinja templating ใน Flask และ django ขอบคุณสำหรับข้อมูล. มีประโยชน์จริงๆ
Doogle

7
lengthกรองยังดูเหมือนว่าจะทำงานในบล็อกเงื่อนไข เช่น{% if athlete_list|length > 1 %}...{% endif %}
Thismatters

93

หากคุณกำลังใช้ Django เมื่อเร็ว ๆ นี้รายการเปลี่ยนแปลง9530 ได้เปิดตัวบล็อก {% empty%} ที่อนุญาตให้คุณเขียน

{% for athlete in athlete_list %}
  ...
{% empty %}
  No athletes
{% endfor %}

มีประโยชน์เมื่อสิ่งที่คุณต้องการเกี่ยวข้องมีการวนซ้ำในรายการที่ไม่ว่างเปล่า



20

รายการถือว่าเป็นFalseหากไม่มีองค์ประกอบดังนั้นคุณสามารถทำสิ่งนี้:

{% if mylist %}
    <p>I have a list!</p>
{% else %}
    <p>I don't have a list!</p>
{% endif %}

13

หากคุณลอง myList | length และ myList | length_is และไม่ได้ผลลัพธ์ที่ต้องการคุณควรใช้ myList.count


6

คุณสามารถลองด้วย:

{% if theList.object_list.count > 0 %}
    blah, blah...
{% else %}
    blah, blah....
{% endif %} 


1

ฉันต้องการความยาวการรวบรวมเพื่อตัดสินใจว่าฉันควรเรนเดอร์ตารางหรือไม่ <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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.