【问题标题】:Not able to use conditional tags in for loop in Django template file无法在 Django 模板文件的 for 循环中使用条件标签
【发布时间】:2015-05-20 01:49:16
【问题描述】:

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

例如:

{% for asample in allsamples %}
    {% ifchanged asample.brand %}
        <h2>{{ asample.brand }}</h2>
    {% endifchanged %}
{% endfor %}

这会引发错误“遇到未知标签 'ifchanged'。Jinja 正在寻找以下标签:'endfor' 或 'else'。需要关闭的最里面的块是 'for'。”

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

【问题讨论】:

    标签: python django-templates jinja2


    【解决方案1】:

    如果您询问jinja2 解决方案,您可以使用if/elseset 解决它:

    {% for asample in allsamples %}
        {% if asample.brand != last_brand %}
            <h2>{{ asample.brand }}</h2>
            {% set last_brand = asample.brand %}
        {% endif %}
    {% endfor %}
    

    【讨论】:

    • 谢谢,正如我所说,我很环保并且在旧版应用程序中工作。所以,这里的前提是,我实际使用的不是Django模板引擎,而是Jinja?
    • @Todd 正确,这非常好,可能是模板渲染速度的原因 - 尽管不建议替换基本的 django 组件。当 django 模板引擎被 jinja2 替换(在 coffin 模块的帮助下)时,我使用了类似的设置。
    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 2017-01-09
    • 2020-06-29
    • 2018-11-19
    • 2012-01-24
    • 2012-03-28
    • 2013-04-23
    • 2020-09-25
    相关资源
    最近更新 更多