模板中的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模板:如果用户属于多个组,则仅显示一次链接

Django模板 - 查找列表中的至少一项是不是出现在其他列表中

在 Django 模板的 Bootstrap 列表组中显示数据

模板标签模板中的 Django 模板块

模板中的 Django 外键

如何在 Django 模板中的“带有模板标签”中设置 Django 渲染块值?