Создать итеративный счетчик в шаблоне DJango - PullRequest
1 голос
/ 06 августа 2020

Я проверил много других вопросов, и я не видел, чтобы мой конкретный сценарий действительно был рассмотрен, и я пробовал много чего безуспешно.

У меня есть DJango for l oop в моем коде HTML, а внутри for l oop - это оператор if, проверяющий, равен ли каждый элемент из списка, который проходит цикл, определенному значению. Если это правда, то на странице создается запись. Мне нужно динамически распечатать номер элемента (например, запись 1 будет отображаться как 1., а запись 2 будет отображаться как 2.)

Две лучшие попытки, которые я сделал:

1.

<!-- this approach prints out 1 for each entry -->
{% with counter=0 %}
{% for q in questionnaire.questions %}
         {% if q.answer %}
         <div class="row"><h3>
                 {{ counter|add:1 }}. {{ q.name }}
         </h3></div>
         <!-- some other code-->

         {% endif %}
{% endfor %}
{% endwith %}

{% for q in questionnaire.questions %}
         {% if q.answer %}
         <div class="row"><h3>
                 <span id="displayCount">0</span>. {{ q.name }}
         </h3></div>
         <!-- some other code-->
         {% endif %}
{% endfor %}

<script type="text/javascript">
        var count = 0;
        var display = document.getElementById("displayCount");
        count++;
        display.innerHTML = count;
</script>

Любая помощь приветствуется

1 Ответ

2 голосов
/ 06 августа 2020

Вы можете получить доступ к встроенному счетчику вашего l oop, используя forloop.counter. Он начинается с 1, вы также можете forloop.counter0, если хотите начать с нуля.

{% for q in questionnaire.questions %}
         {% if q.answer %}
             <div class="row">
                 <h3>
                     {{ forloop.counter }}. {{ q.name }}
                 </h3>
             </div>
             <!-- some other code-->
         {% endif %}
{% endfor %}

Отфильтруйте свой набор запросов в своем представлении, чтобы избежать проблем с индексацией и отделением презентации от logi c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...