无法在 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/else
和set
解决它:
% 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图表
html 上的 django for 循环无法检索其 object_lists 的每个数据字段