Django - วนซ้ำในวงวนของเทมเพลต


250

ฉันมีสิ่งต่อไปนี้สำหรับการวนซ้ำในเทมเพลต django ที่แสดงวัน ฉันสงสัยว่ามันเป็นไปได้ที่จะวนซ้ำ (ในกรณีด้านล่าง i) ในวง หรือฉันต้องเก็บไว้ในฐานข้อมูลแล้วทำการสืบค้นในรูปแบบของ day.day_number?

{% for days in days_list %}
    <h2># Day {{ i }} - From {{ days.from_location }} to {{ days.to_location }}</h2>
{% endfor %}

คำตอบ:


594

Django ให้มัน คุณสามารถใช้:

  • {{ forloop.counter }}ดัชนีเริ่มต้นที่1
  • {{ forloop.counter0 }}ดัชนีเริ่มต้นที่0

ในเทมเพลตคุณสามารถทำได้:

{% for item in item_list %}
    {{ forloop.counter }} # starting index 1
    {{ forloop.counter0 }} # starting index 0

    # do your stuff
{% endfor %}

ข้อมูลเพิ่มเติมได้ที่: สำหรับ | แท็กแม่แบบและตัวกรองในตัว เอกสาร Django


1
แต่มันให้ความยาว 1
VIKAS KOHLI

2
สิ่งที่เกี่ยวกับซ้อนสำหรับลูป? เราจะบอก django ได้อย่างไรถ้าเราต้องการนับวงในหรือวงนอก
Tim Woocker

4
@ crey4fun ตรวจสอบforloop.parentloopเอกสารอ้างอิงสำหรับข้อมูลเพิ่มเติม
Rohan

91

นอกจากนี้ยังสามารถใช้สิ่งนี้:

{% if forloop.first %}

หรือ

{% if forloop.last %}

10
ไม่ใช่คำตอบของคำถาม แต่ยังคงเป็นคำตอบสำหรับคนจำนวนมากที่จะค้นหาคำถามนี้ สิ่งที่ดี!
kontur

1

[Django HTML เทมเพลตไม่สนับสนุนดัชนีตอนนี้] แต่คุณสามารถบรรลุเป้าหมาย:

หากคุณใช้Dictionary Inside Dictionary ใน views.py การทำซ้ำสามารถทำได้โดยใช้คีย์เป็นดัชนี ตัวอย่าง:

{% for key, value in DictionartResult.items %} <!-- dictionartResult is a dictionary having key value pair-->
<tr align="center">
    <td  bgcolor="Blue"><a href={{value.ProjectName}}><b>{{value.ProjectName}}</b></a></td>
    <td> {{ value.atIndex0 }} </td>         <!-- atIndex0 is a key which will have its value , you can treat this key as index to resolve-->
    <td> {{ value.atIndex4 }} </td>
    <td> {{ value.atIndex2 }} </td>
</tr>
{% endfor %}

ถ้าคุณใช้รายการภายในพจนานุกรมแล้วไม่เพียงสามารถควบคุมการวนซ้ำแรกและสุดท้ายเท่านั้น แต่สามารถควบคุมดัชนีทั้งหมดได้ ตัวอย่าง:

{% for key, value in DictionaryResult.items %}
    <tr align="center">
    {% for project_data in value %}
        {% if  forloop.counter <= 13 %}  <!-- Here you can control the iteration-->
            {% if forloop.first %}
                <td bgcolor="Blue"><a href={{project_data}}><b> {{ project_data }} </b></a></td> <!-- it will always refer to project_data[0]-->
            {% else %}
                <td> {{ project_data }} </td> <!-- it will refer to all items in project_data[] except at index [0]-->
            {% endif %}
            {% endif %}
    {% endfor %}
    </tr>
{% endfor %}

สิ้นสุดถ้า;)

// Hope ได้ครอบคลุมการแก้ปัญหาด้วย Dictionary, List, HTML template, สำหรับ Loop, Inner loop, If Else Django HTML Documentaion สำหรับวิธีการเพิ่มเติม: https://docs.djangoproject.com/en/2.2/ref/templates/builtins/

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