Очень часто возникает необходимость отобразить в шаблоне 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 %}

Комментариев нет:
Отправить комментарий