DJango 模板中的自定义变量索引

Custom variable index inside a DJango template

提问人:NicoCaldo 提问时间:8/30/2023 最后编辑:marc_sNicoCaldo 更新时间:9/8/2023 访问量:20

问:

我在 Django 中有一个模板,它是由 for 循环生成的,例如

{% for test in test_list %}

   <!-- dome code here -->
    {% if not test.testInPausa %}
    <div class="progress-wrapper-{{ forloop.counter0 }}">
      <div
        id="progress-bar-{{ forloop.counter0 }}"
        class="progress-bar-{{ forloop.counter0 }} progress-bar-striped"
      >
        &nbsp;
      </div>
    </div>
    <div id="progress-bar-message-{{ forloop.counter0 }}">
      Waiting for progress to start...
    </div>
    {% endif %} {% endfor %}

现在,我想计算代码输入 if 语句的时间。

我想这样做是因为,目前,div 中的 id 和 class 由 forloop.counter 索引,因为它并不总是输入 if 语句,所以计算每个 for 循环,使 id 和类跳转索引。

有没有办法拥有一些东西

{% my_index = 0 %}
{% for test in test_list %}
       <!-- dome code here -->
        {% if not test.testInPausa %}
        <div class="progress-wrapper-{{ my_index }}">
          <div
            id="progress-bar-{{ my_index }}"
            class="progress-bar-{{ my_index }} progress-bar-striped"
          >
            &nbsp;
          </div>
        </div>
        <div id="progress-bar-message-{{ my_index }}">
          Waiting for progress to start...
        </div>
{% my_index++ %}
        {% endif %} {% endfor %}

我已经尝试了该语句和内置的添加过滤器,但没有运气with

{% with count=0 %}
    {% for test in test_list %}
           <!-- dome code here -->
            {% if not test.testInPausa %}
            <div class="progress-wrapper-{{ my_index }}">
              <div
                id="progress-bar-{{ my_index }}"
                class="progress-bar-{{ my_index }} progress-bar-striped"
              >
                &nbsp;
              </div>
            </div>
            <div id="progress-bar-message-{{ my_index }}">
              Waiting for progress to start...
            </div>
    {{ count|add:"1" }} {% endif %} {% endfor %} {% endwith %}
Django 模板

评论


答:

0赞 michjnich 8/30/2023 #1

使用而不是试图维护自己的。forloop.counter

https://docs.djangoproject.com/en/4.2/ref/templates/builtins/#for

编辑:在视图中执行此操作,以便仅包含要迭代的内容。这不是模板中应该有的逻辑。然后使用iftest_listforloop.counter

评论

0赞 NicoCaldo 8/30/2023
如前所述,我需要计算周期进入 的时间,而不是总 o 周期数if
0赞 michjnich 8/30/2023
该逻辑不属于模板。
0赞 NicoCaldo 8/30/2023
根据 Django 文档,它也应该在模板中完成
0赞 michjnich 8/30/2023
我想你已经发现了为什么不应该在模板中这样做,我建议不要这样做。只需将正确的数据发送到模板即可开始 - 在视图中进行筛选。我怀疑 django 文档会告诉你做你正在做的事情,因为它是显示层中的业务逻辑。
0赞 NicoCaldo 9/13/2023
唯一的解决方案是在后端详细说明