当前位置: 首页 > 知识库问答 >
问题:

Django模板中循环的条件计数器

沈伟
2023-03-14

当在我的电子商务网站上呈现我的“产品”详细信息时,我希望我的for循环在满足三次条件后结束。

    {% for item in subcategory %}
    {% with counter="0" %}
    <div>
        <h5 class="my-0" style="font-weight: 700;">{{ item.title }}</h3>
    </div>
    <div class="row">
        {% for i in products %}
        {% if i.category.id == item.id %}
        {{ counter|add:"1" }}
        {% if counter == "3" %}
            {{ break}}
        {% endif %}
        <div class="col-3 p-0 px-1 my-3">
            <a href="{% url 'product_detail' i.id i.slug %}">
                <img class="w-100" id="catbox" src="{{ i.image.url }}" alt="">
            </a>
        </div>
        {% endif %}
        {% endfor %}
        <div class="col-3 p-0 my-3   text-center"
            style="border-radius: 10px;background: url({% static 'images/temp.jpeg' %}); background-size: cover;">
            <div class="h-100 w-100 m-0 p-0" style="background: rgba(0, 0, 0, 0.61);border-radius: 10px;">
                <div style="position: relative;top: 50%;transform: translateY(-50%);">
                    <a href="{% url 'category_product' item.id item.slug %}" class="text-white " href="#"><strong>SEE
                            ALL</strong></a>
                </div>
            </div>
        </div>
    </div>
    {% endwith %}
    {% endfor %}

我希望第二个for循环,即{%for i在产品%}中,一旦满足if条件,即{%ifi.category.id==item.id%}满足三次。但是我设置为0的计数器会重复增加到1,而不是随着for循环递增。因为它里面有一个if条件,我也不能使用forloop.counter。我希望这个过程在第一个for循环的每次迭代中重复,即{%for子类%}

共有2个答案

孙渝
2023-03-14

你不需要自己用“with”标签定义计数器。您可以使用django内置计数器进行循环。您可以像这样访问for循环中的计数器:{{forloop.counter}从1开始,而{{forloop.counter0}}从0开始。您还可以访问外部for循环计数器的计数器,如下所示:forloop。parentloop。计数器/计数器0检查此处

翟弘
2023-03-14

不存在用于中断(或像python中那样继续)目的的模板标记。在模板中发送未经处理的数据通常是一种不好的做法。我认为,首先需要根据视图中的条件创建一个列表,然后将其传递给模板以使用它们。然而,你可以做一件事(据我说效率很低),

{% if counter <= 3 %}
   do the job which you meant to do before breaking
{% endif %}

或者你可以尝试创建你自己的模板标签/过滤器。但是我建议你在模板中保持简单,在视图中搞砸它。查看文档模板标签

 类似资料:
  • 问题内容: 如何在Django模板中编写数字循环?我的意思是 问题答案: 我使用了一种简单的技术,该技术非常适合没有特殊标签且没有其他上下文的小情况。有时候这很方便

  • 我有这样的疑问: 在模板中,我希望通过以下方式获取数据: 但不是产生数据作为: 它的结果是 发生了什么?我有理由在列表中存储数据。如何分别访问每个数据。谢谢 用途:颜色存储在数据字段中为:,因此我希望实现: 编辑类Hello(models.Model):用户=模型。外键(用户)数据=模型。字符域(最大长度=255)

  • 问题内容: 希望这是一种快速/简便的方法。我知道一种通过自定义模板标签解决此问题的方法,但是我很好奇是否还有其他方法在寻找。我已经为博客创建了各种图库功能,并且有一个图库列表页面可以对我的所有画廊进行分页。现在,我不想显示该列表中每个画廊的所有照片,因为如果每个画廊甚至有20张图像,那么如果我分5篇文章,那一页上就只有100张图像。那会很浪费,而且是处理问题的错误方法。 我的问题是,有没有办法只显

  • 问题内容: 我在显示日期的django模板中有以下for循环。我想知道是否有可能在循环中迭代一个数字(在以下情况下为i)。还是我必须将其存储在数据库中,然后以days.day_number的形式查询? 问题答案: Django提供了它。你可以使用以下任一方法: 索引从1开始。 索引从0开始。 在模板中,你可以执行以下操作:

  • 在django模板中,我有以下for循环显示天数。我想知道是否有可能在循环中迭代一个数字(在下面的例子I中)。或者我必须将其存储在数据库中,然后以天的形式进行查询。第几天?

  • 问题内容: 这是输出: 这是模板: 但是模板中的循环不起作用。什么都没有出现。它甚至没有给我一个错误。我怎样才能解决这个问题?应该显示姓氏和名字,像这样: 问题答案: 完成插入新值后,可以通过禁用defaultdict的默认功能来避免复制到新dict : 说明 将在Django模板变量解析算法将尝试解析为第一,使用时其解析为一个空列表(列表)。 要禁用默认列表为空列表并让Django失败,n然后继