Python 无法在Django模板文件的for循环中使用条件标记
我正在使用Django 1.4/Python2.7.9(因为我必须这样做,我知道1.4现在已经很旧了),我对Django/python非常熟悉。在我的模板文件中,我似乎无法在for循环中使用任何很酷的条件标记,如ifchanged或ifequal 例如: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> {%
{% 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
模块的帮助下),我使用过类似的设置。