Django 模板中的"只显示一次

4 投票
1 回答
2333 浏览
提问于 2025-04-16 08:46

我在我的Django模板里有一个for循环,它会打印出一堆结果(每个结果都有时间戳)。我想在时间戳达到某个值时打印一段特定的数据(比如一个


),但我只想打印一次。

{% for result in set %}

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

{{ result.info }}

{% endfor %}

这样做没问题,但它会对每个符合条件的结果都打印这个


。我想要的是只在第一次满足条件时打印。

类似这样的:

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

不过,由于Django的模板不支持在里面赋值,我有点不知道该怎么办。我能想到几种方法(比如使用一个可以在模板中访问的类/函数来切换标志,或者在视图中做更多处理,但我担心这样会增加数据库的调用次数和数据的迭代),但我在想有没有一种简单又“django风”的方法来做到这一点。

谢谢=)

1 个回答

4

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

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

撰写回答