timofeydeys
@timofeydeys
Свобода творцов

Можно ли в django кешировать отрендереную часть шаблона на лету?

Суть вопроса такова, вот есть маленький упрощенный пример шаблона. Суть в том, что возникает такая ситуация, когда он встречается два а то и больше в шаблоне. Т.е. при рендеринге этот код выполняется два а то и больше раз. Можно ли один раз отрендерить кусок(во время рендеринга шаблона) а далее уже отрендеренный вставить?

{% if page_obj.paginator.num_pages >= 10 %}
    {# Если элементов больше чем 10 #}
    {# Боковые теги #}
    {% if page_obj.has_previous %}
        <li><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page=1">«</a></li>
    {% else %}
        <li class="disabled"><span>«</span></li>
    {% endif %}
    {# Сам цикл формирования кнопок с цифрами. Если их меньше 10 то просто выводим #}
    {% for i in page_obj.paginator.page_range %}
        {% if i|add:"5" >= page_obj.number and i|add:"-5" <= page_obj.number %}
            {% if i == page_obj.number %}
                <li class="active"><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page={{ i }}">{{ i }}</a></li>
            {% else %}
                <li><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page={{ i }}">{{ i }}</a></li>
            {% endif %}
        {% endif %}
    {% endfor %}
    {% if page_obj.has_next %}
        <li><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page={{ page_obj.paginator.num_pages }}">»</a></li>
    {% else %}
        <li class="disabled"><span>»</span></li>
    {% endif %}
    {# Конец формирования списка ссылко. Вторая кнопка стрелочка #}
{% else %}
    {# Если элементов меньше чем 10 #}
    {# Боковые теги #}
    {% if page_obj.has_previous %}
        <li><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page={{ page_obj.next_page_number }}">«</a></li>
    {% else %}
        <li class="disabled"><span>«</span></li>
    {% endif %}
    {# Сам цикл формирования кнопок с цифрами. Если их меньше 10 то просто выводим #}
    {% for i in page_obj.paginator.page_range %}
        {% if i == page_obj.number %}
            <li class="active"><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page={{ i }}">{{ i }}</a></li>
        {% else %}
            <li><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page={{ i }}">{{ i }}</a></li>
        {% endif %}
    {% endfor %}
    {# Конец формирования списка ссылко. Вторая кнопка стрелочка #}
    {% if page_obj.has_next %}
        <li><a href="{{ request.get_full_path }}{% if request.GET %}&{% else %}?{% endif %}page={{ page_obj.next_page_number }}">»</a></li>
    {% else %}
        <li class="disabled"><span>»</span></li>
    {% endif %}
{% endif %}
{# Конец пагинации #}
  • Вопрос задан
  • 289 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы