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

Posted

技术标签:

【中文标题】无法在 Django 模板文件的 for 循环中使用条件标签【英文标题】:Not able to use conditional tags in for loop in Django template file 【发布时间】: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 循环中使用其他标签吗?

【问题讨论】:

【参考方案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 模块的帮助下)时,我使用了类似的设置。

以上是关于无法在 Django 模板文件的 for 循环中使用条件标签的主要内容,如果未能解决你的问题,请参考以下文章

django 模板中的 for 循环 - 列表对象没有属性“get”

在Django模板中使用for循环显示多个chart.js图表

Jinja / Django for 循环范围不起作用

html 上的 django for 循环无法检索其 object_lists 的每个数据字段

Django 模板语言:使用带有 else 的 for 循环

Django模板中的for循环