Оптимизация шаблона загрузки фильтров шаблонов Django в цикле for

В шаблоне Django я использую for loop для отображения содержимого.

Этот контент бывает 3-х типов. Каждый тип имеет свой набор условий, HTML и CSS.

Я чувствовал, что включение всей этой обработки в 1 шаблон усложнит поддержку файла. Поэтому вместо этого я использую теги шаблона:

{% load get_display_type_1 %}
{% load get_display_type_2 %}
{% load get_display_type_3 %}

{% for item in content %}

    {% if item == '1' %}
        {% display_type_1 payload='foo' %}
    {% elif item == '2' %}
        {% display_type_2 payload='bar' %}
    {% elif item == '3' %}
        {% display_type_3 payload='foo bar' %}
    {% endif %}

{% endfor %}

И где, например, тег шаблона под названием display_type_1 имеет следующий код:

from django import template

register = template.Library()

@register.inclusion_tag(file_name='display_type_1.html')
def display_type_1(payload):
    return {'payload':payload}

Пока стандартные вещи.

А теперь взгляните на HTML-шаблон, связанный с тегом template:

{% load myfilter %}

<div class="type1">{{ payload|myfilter }}</div>

т.е. обратите внимание, что здесь я загружаю пользовательский фильтр с именем myfilter.

Итак, вот проблема: по сути, я вызвал {% load myfilter %} в цикле for. Как? Поскольку сам тег шаблона находится в цикле for родительского шаблона.

Это имеет более низкую производительность, чем если бы я написал все в родительском шаблоне и загрузил фильтр один раз.

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

Может ли кто-нибудь помочь мне улучшить этот шаблон, сделав его более оптимальным? Наглядный пример был бы великолепен.


Примечание: это упрощенный пример, реальный код сложнее


person Hassan Baig    schedule 16.11.2017    source источник
comment
что-то вроде этого может помочь? stackoverflow.com/questions/1184983/   -  person dahrens    schedule 16.11.2017
comment
@dahrens: хорошо, но я не хочу включать их во все шаблоны. Это огромный проект. Тем не менее, спасибо за предложение, это то, что можно рассмотреть, если ничего не помогает.   -  person Hassan Baig    schedule 16.11.2017