Python 无法在Django模板文件的for循环中使用条件标记

Python 无法在Django模板文件的for循环中使用条件标记,python,django-templates,jinja2,Python,Django Templates,Jinja2,我正在使用Django 1.4/Python2.7.9(因为我必须这样做,我知道1.4现在已经很旧了),我对Django/python非常熟悉。在我的模板文件中,我似乎无法在for循环中使用任何很酷的条件标记,如ifchanged或ifequal 例如: {% for asample in allsamples %} {% ifchanged asample.brand %} <h2>{{ asample.brand }}</h2> {%

我正在使用Django 1.4/Python2.7.9(因为我必须这样做,我知道1.4现在已经很旧了),我对Django/python非常熟悉。在我的模板文件中,我似乎无法在for循环中使用任何很酷的条件标记,如ifchanged或ifequal

例如:

{% for asample in allsamples %}
    {% ifchanged asample.brand %}
        <h2>{{ asample.brand }}</h2>
    {% endifchanged %}
{% endfor %}
{%表示所有样本中的样本%}
{%ifchanged asample.brand%}
{{asample.brand}}
{%endifchanged%}
{%endfor%}
这会引发错误“遇到未知标记'ifchanged'。Jinja正在查找以下标记:'endfor'或'else'。需要关闭的最内层块是'for'


我也试过ifequals——同样的错误。是否有什么东西阻止我在for循环中使用其他标记?

如果您询问有关
jinja2
解决方案,您可以使用
If/else
set
解决此问题:

{% for asample in allsamples %}
    {% if asample.brand != last_brand %}
        <h2>{{ asample.brand }}</h2>
        {% set last_brand = asample.brand %}
    {% endif %}
{% endfor %}
{%表示所有样本中的样本%}
{%if asample.brand!=最后一个品牌%}
{{asample.brand}}
{%set last_brand=asample.brand%}
{%endif%}
{%endfor%}

谢谢,正如我所说,我是一个非常环保的人,在一个遗留应用程序中工作。因此,这里的前提是,我实际上并没有使用Django模板引擎,而是使用Jinja?@Todd,这是正确的,这很正常,可能是模板渲染速度造成的——尽管不建议替换基本的Django组件。当django模板引擎被jinja2取代时(在
coffin
模块的帮助下),我使用过类似的设置。