在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模板:
{% load myfilter %}
<div class="type1">{{ payload|myfilter }}</div>
即。注意我在这里加载一个名为myfilter
的自定义过滤器。
所以这就是问题所在:实质上,我在for循环中调用了{% load myfilter %}
。怎么样?因为模板标签本身位于父模板的for循环中。
如果我在父模板中写入所有内容并加载过滤器一次,那么性能会降低。
我不希望以这种方式放弃使用模板标签;我发现它更易于维护。但我不想通过在for循环中加载过滤器(等)来牺牲性能。
有人可以帮助我改进这种模式,使其更加优化吗?一个说明性的例子会很棒。
注意:这是一个简化的例子,实际代码更复杂