模板中的Django“显示一次”
Posted
技术标签:
【中文标题】模板中的Django“显示一次”【英文标题】:Django "Display once" in templates 【发布时间】:2011-05-28 01:19:23 【问题描述】:我的 django 模板中有一个 for 循环,可以打印出一大堆结果(每个结果都带有时间戳)。一旦时间戳达到某个值,我想打印任意数据(例如
),但我只想打印一次。
% for result in set %
% if some_time > result.time %
<hr />
% endif %
result.info
% endfor %
这很好,但它会为上述等于 true 的每个结果打印 HR。我所追求的是只在第一次打印。
类似:
% if some_time > result.time and bool_flag %
现在,由于 Django 不支持在其模板中分配变量,我有点不知所措。我可以想到几种方法(使用模板可访问的类/函数来切换标志,或者在视图中进行更多处理,但我担心这会增加数据库调用和数据迭代的次数) ,但我想知道是否有一个不错的简单“djangoey”方式来做到这一点。
谢谢 =)
【问题讨论】:
【参考方案1】:你可以使用内置的ifchanged模板标签:
% ifchanged %
% if some_time > result.time %
<hr />
% endif %
% endifchanged %
【讨论】:
太棒了!不完全是我所追求的,而是完美地满足了我的需求(由于存储字符串,成本比我预期的要高一点,但已经足够好了)。谢谢=)以上是关于模板中的Django“显示一次”的主要内容,如果未能解决你的问题,请参考以下文章
Django模板 - 查找列表中的至少一项是不是出现在其他列表中