Django模板中的“Display once”是什么意思?

4

我在django模板中有一个for循环,它打印出一堆结果(每个结果都有时间戳)。我想在时间戳达到某个值时打印任意数据(例如<hr />),但我只想打印一次。

{% for result in set %}

{% if some_time > result.time %}
 <hr />
{% endif %}

{{ result.info }}

{% endfor %}

这个代码完全没问题,除非上面的条件成立,否则它会将HR打印出来。但我想要的是只在第一次成立时才打印出来。

类似于:

{% if some_time > result.time and bool_flag %}

现在,由于Django不支持在模板中分配变量,我有点不知所措。我可以想到几种方法来解决这个问题(使用一个可访问模板的类/函数来切换标志,或者在视图中进行更多处理,但我担心这将增加数据库调用和数据迭代的数量),但我想知道是否有一种漂亮简单的“djangoey”方法来解决这个问题。

谢谢 =)

1个回答

4

您可以使用内置的ifchanged模板标签:

{% ifchanged %}
    {% if some_time > result.time %}
        <hr />
    {% endif %}
{% endifchanged %}

太棒了!不完全是我想要的,但完美地满足了我的需求(由于存储字符串而略微超出了我的预期成本,但已经足够好了)。谢谢=) - Tyris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接