Django - số lần lặp trong vòng lặp của mẫu


250

Tôi có vòng lặp sau trong mẫu django của tôi hiển thị ngày. Tôi tự hỏi, liệu có thể lặp lại một số (trong trường hợp dưới đây i) trong một vòng lặp. Hoặc tôi phải lưu trữ nó trong cơ sở dữ liệu và sau đó truy vấn nó dưới dạng days.day_number?

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

Câu trả lời:


593

Django cung cấp nó. Bạn có thể sử dụng một trong hai:

  • {{ forloop.counter }}chỉ số bắt đầu từ 1 .
  • {{ forloop.counter0 }}chỉ số bắt đầu từ 0 .

Trong mẫu, bạn có thể làm:

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

    # do your stuff
{% endfor %}

Thêm thông tin tại: cho | Thẻ mẫu và bộ lọc tích hợp | Tài liệu Django


1
Nhưng nó cho chiều dài-1.
VIKAS KOHLI

2
Những gì về lồng cho vòng lặp? Làm thế nào chúng ta có thể nói với django nếu chúng ta muốn đếm vòng trong hoặc vòng ngoài?
Tim Woocker ngày

4
@ crey4fun, kiểm tra forloop.parentlooptài liệu giới thiệu để biết thêm thông tin.
Rohan

89

Ngoài ra người ta có thể sử dụng điều này:

{% if forloop.first %}

hoặc là

{% if forloop.last %}

10
Không phải là câu trả lời cho câu hỏi, nhưng vẫn là câu trả lời cho nhiều người sẽ tìm kiếm câu hỏi này. Đồ tốt!
kontur

1

[Mẫu HTML Django hiện không hỗ trợ chỉ mục], nhưng bạn có thể đạt được mục tiêu:

Nếu bạn sử dụng Từ điển bên trong Từ điển trong lượt xem thì có thể sử dụng khóa làm chỉ mục. thí dụ:

{% 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 %}

Nếu bạn sử dụng Danh sách trong từ điển thì không chỉ có thể kiểm soát lần lặp đầu tiên và lần lặp cuối mà tất cả các chỉ mục đều có thể được kiểm soát. thí dụ:

{% 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 %}

Kết thúc nếu;)

// Hy vọng đã bao phủ giải pháp với Từ điển, Danh sách, mẫu HTML, Vòng lặp, Vòng lặp bên trong, Nếu Khác. Django HTML Documentaion để biết thêm các phương thức: https://docs.djangoproject.com/en/2.2/ref/temsheet/builtins/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.