Очень часто возникает необходимость отобразить в шаблоне Django повторяющиеся элементы. В нашем примере это будут призеры конкурса:
Как грамотно написать код для вывода повторяющихся элементов?
Вынесем оформление каждого призера в отдельный файл block_prizer.html:
Теперь мы можем при помощи нашего тэга show_prizer подключать и рендерить шаблон block_prizer.html. Для этого нужно в главном шаблоне импортировать библиотеку наших кастомных тэгов, а затем передать в наш кастомный тэг show_prizer переменную:
Как грамотно написать код для вывода повторяющихся элементов?
Вынесем оформление каждого призера в отдельный файл block_prizer.html:
Данный файл мы можем подключить в шаблоне и отрендерить посредством нашего шаблонного тега, который будет создан при помощи inclusion_tag посредством декорирования. В папке нашего приложения создадим директорию templatetags (и файл __init__.py) и поместим туда файл collection_extras.py:Место {{ prizer.place }}
{{ prizer.collection.title }}
from django import template register = template.Library() @register.inclusion_tag('collection/block_prizer.html') def show_prizer(prizer): "Show prizer template in prizer list" return {'prizer': prizer}
Теперь мы можем при помощи нашего тэга show_prizer подключать и рендерить шаблон block_prizer.html. Для этого нужно в главном шаблоне импортировать библиотеку наших кастомных тэгов, а затем передать в наш кастомный тэг show_prizer переменную:
{% load collection_extras %}Список призеров
{% for prizer in prizer_year_list|dictsort:'nomination.title' %} {% ifchanged %}{{ prizer.nomination.title }}
{% endifchanged %} {% show_prizer prizer %} {% endfor %}
Комментариев нет:
Отправить комментарий