【问题标题】:Django template iteration / loop count based on condition基于条件的Django模板迭代/循环计数
【发布时间】:2018-05-04 10:01:16
【问题描述】:

我正在尝试根据条件从 Django 中的 PHP 创建像 $i==0; $i++; 这样的迭代。

{% for item in event.products %}         
{% if item.category = "Treat" %}

现在 - 我想知道这个条件满足了多少次(类别 = 治疗),以及如何在 2 个与该循环匹配的项目之后停止 for 循环。

谢谢!

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    django 模板系统不允许中断 for 循环或设置计数器,即使 elsewhere 显示了如何在某些情况下克服此限制或如何 create 新的模板标签可以帮助您,也许您可​​以预先计算您的要求并通过在您的视图中切片来准备要打印的列表。

    【讨论】:

      【解决方案2】:

      我同意 @DRC 的观点,即最好在您的视图代码中而不是在模板中完成此业务逻辑。

      如果您仍然需要模板解决方案:

      {% regroup event.products by item.category as grouped_products %}
      
      {% for group in grouped_products %}
          {% if group.grouper == "Treat" %}
              {% for item in group.list|slice:":2" %}
                  {{ item.imageURL }}
              {% endfor %}
          {% endif %}
      {% endfor %}
      

      sliceregroup 的文档。

      【讨论】:

      • 感谢您到目前为止的帮助。太好了,但是我将如何回显一些我在旧代码中回显的变量:{{ item.imageURL }} 不幸的是,这将进入 ESP,因此他查看代码没有变化。跨度>
      • slice 仍然返回一个列表。你应该能够迭代它。我已经更改了示例。
      猜你喜欢
      • 1970-01-01
      • 2021-05-07
      • 2012-07-13
      • 1970-01-01
      • 2012-01-21
      • 2011-05-20
      • 1970-01-01
      • 2014-08-24
      相关资源
      最近更新 更多