【问题标题】:Django "Display once" in templates模板中的Django“显示一次”
【发布时间】: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”方式来做到这一点。

谢谢 =)

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

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

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

    【讨论】:

    • 太棒了!不完全是我所追求的,而是完美地满足了我的需求(由于存储字符串,成本比我预期的要高一点,但已经足够好了)。谢谢=)
    猜你喜欢
    • 2012-12-18
    • 2019-12-22
    • 2016-10-03
    • 2014-11-22
    • 2012-03-01
    • 2014-04-23
    • 2019-09-20
    • 2020-05-05
    • 2019-08-07
    相关资源
    最近更新 更多