Как создать inclusion tag, способный брать данные для шаблона из разных источников?

Я разрабатываю небольшую веб-галерею, и в этой галерее есть несколько типов вывода фотографий:

  1. Все фотографии, имеющиеся в базе данных
  2. Фотографии по определенному циклу фотографий
  3. Фотографии по определенному тегу

Для каждого типа вывода создана соответствующая страница (photos.html, serie.html, tag.html) и в этих страницах для вывода используется идентичный HTML-код:

{% load photos_tags %}


{% if photos|length == 0 %}
    <p>Фотографии не найдены</p>
{% else %}
    {% for p in photos %}
        <div class="photo-container">
            <h2>{{ p.title }}</h2>
            <img src="{{ p.image.url }}" alt="Не удалось загрузить фотографию">
            <p>{{ p.info }}</p>
            <p>{{ p.year }}</p>

            {% get_tags p as tags %}
            <span>Теги: </span>
            {% if tags|length == 0 %}
                <span>Для данной фотографии теги не добавлены.</span>
            {% else %}
                {% for t in tags %}
                    {% if not forloop.last %}
                        <span><a href="{{ t.get_slug }}">{{ t.tag_name }}</a>,</span>
                    {% else %}
                        <span><a href="{{ t.get_slug }}">{{ t.tag_name }}</a>.</span>
                    {% endif %}
                {% endfor %}
            {% endif %}
        </div>

        <div class="line"></div>
    {% endfor %}
{% endif %}

Я решил создать inclusion tag show_photos, который будет содержать этот код, чтобы уменьшить число повторений кода. Проблема состоит в том, что этот код должен получать разные photos в зависимости от того, какой тип вывода используется. Как прописать это в inclusion tag? Возможно, inclusion tag не очень для этого подходит? В таком случае, подскажите, какую технологию лучше использовать, чтобы сделать то, что я хочу

Вернуться на верх