Джанго "Показать один раз" в шаблонах - PullRequest
4 голосов
/ 20 декабря 2010

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

{% for result in set %}

{% if some_time > result.time %}
 <hr />
{% endif %}

{{ result.info }}

{% endfor %}

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

Что-то вроде:

{% if some_time > result.time and bool_flag %}

Теперь, поскольку Django не поддерживает назначение переменных в своих шаблонах, ям в недоумении, что делать.Я могу придумать несколько способов сделать это (используя доступный для шаблона класс / функцию, которая переключает флаг, или, альтернативно, делая больше обработки в представлении, но я боюсь, что это увеличит количество вызовов базы данных и итераций в данных), но мне интересно, есть ли хороший простой "djangoey" способ сделать это.

Спасибо =)

1 Ответ

4 голосов
/ 20 декабря 2010

Вы можете использовать встроенный в случае изменения тег шаблона:

{% ifchanged %}
    {% if some_time > result.time %}
        <hr />
    {% endif %}
{% endifchanged %}
...