【问题标题】:Django - Trying to access numbers in for loop via counterDjango - 尝试通过计数器访问 for 循环中的数字
【发布时间】:2020-09-11 16:00:35
【问题描述】:

我正在建立一个包含 cmets 和东西的站点。我想让用户看到他们的 cmets 的图标,这应该会切换另外两个按钮,分别是编辑和删除。为此,我必须为要切换的每个 div 提供不同的 id。

基本上我想做的事:

1st iteration -- access to numbers 1 and 2
2nd iteration -- access to numbers 3 and 4
3rd iteration -- access to numbers 5 and 6

代码必须如下所示:

<button class="btn btn-outline-secondary" data-toggle="collapse" data-target=".multi-collapse"
                aria-expanded="false" 
                aria-controls="multiCollapseComment1 multiCollapseComment2">
            <i class="fas fa-ellipsis-v"></i>
        </button>
        <div class="row">
            <div class="col">
                <div class="collapse multi-collapse" id="multiCollapseComment1">
                    <a class="btn btn-secondary btn-sm mt-1 mb-1"
                       href="#">Edit</a>
                </div>
            </div>
            <div class="col">
                <div class="collapse multi-collapse" id="multiCollapseComment2">
                    <a class=" btn btn-outline-danger btn-sm mt-1 mb-1" 
                       href="#">Delete</a>
                </div>
            </div>
        </div>
    </div>
<button class="btn btn-outline-secondary" data-toggle="collapse" data-target=".multi-collapse"
                aria-expanded="false" 
                aria-controls="multiCollapseComment3 multiCollapseComment4">
            <i class="fas fa-ellipsis-v"></i>
        </button>
        <div class="row">
            <div class="col">
                <div class="collapse multi-collapse" id="multiCollapseComment3">
                    <a class="btn btn-secondary btn-sm mt-1 mb-1"
                       href="#">Edit</a>
                </div>
            </div>
            <div class="col">
                <div class="collapse multi-collapse" id="multiCollapseComment4">
                    <a class=" btn btn-outline-danger btn-sm mt-1 mb-1" 
                       href="#">Delete</a>
                </div>
            </div>
        </div>
    </div>

我尝试通过{{forloop.counter|add:"1"}} 访问这些号码,但这不是解决方案。因为我意识到即使我添加 1 viait 也不起作用,因为它会是这样的: 1,2 ; 2,3; ....但我需要 1,2; 3,4;每个循环 5,6。我该怎么做?

【问题讨论】:

  • @DiegoPuente 抱歉,您能再看看问题吗?
  • 为什么不使用组合来创建密钥?比如multiCollapseComment{{object.pk}}edit{{comment.pk}}multiCollapseComment{{object.pk}}delete{{comment.pk}}
  • 这就像我只循环 cmets 所以{{object.pk}} 不会有任何变化,因为这是一个详细视图的模板

标签: python django django-templates


【解决方案1】:

我假设了两件事:

  1. 你陷入了循环。
  2. 在示例中,有两个 cmets。

因此,如果您处于循环中,则只需其中一个即可。

<button class="btn btn-outline-secondary" data-toggle="collapse" data-target=".multi-collapse"
                aria-expanded="false" 
                aria-controls="multiCollapseComment{{comment.id}}edit multiCollapseComment{{comment.id}}delete">
    <i class="fas fa-ellipsis-v"></i>
</button>
<div class="row">
    <div class="col">
        <div class="collapse multi-collapse" id="multiCollapseComment{{comment.id}}edit">
            <a class="btn btn-secondary btn-sm mt-1 mb-1"
                href="#">Edit</a>
        </div>
    </div>
    <div class="col">
        <div class="collapse multi-collapse" id="multiCollapseComment{{comment.id}}delete">
            <a class=" btn btn-outline-danger btn-sm mt-1 mb-1" 
                href="#">Delete</a>
        </div>
    </div>
</div>

<-- i supposed that this is another comment -->

<button class="btn btn-outline-secondary" data-toggle="collapse" data-target=".multi-collapse"
                aria-expanded="false" 
                aria-controls="multiCollapseComment{{comment.id}}edit multiCollapseComment{{comment.id}}delete">
    <i class="fas fa-ellipsis-v"></i>
</button>
<div class="row">
    <div class="col">
        <div class="collapse multi-collapse" id="multiCollapseComment{{comment.id}}edit">
            <a class="btn btn-secondary btn-sm mt-1 mb-1"
                href="#">Edit</a>
        </div>
    </div>
    <div class="col">
        <div class="collapse multi-collapse" id="multiCollapseComment{{comment.edit}}delete">
            <a class=" btn btn-outline-danger btn-sm mt-1 mb-1" 
                href="#">Delete</a>
        </div>
    </div>
</div>

【讨论】:

  • 啊是的,应该可以,我没想到要添加字母而不是数字(真是个菜鸟),谢谢!
【解决方案2】:

Django 带有一个名为 "add"

内置过滤器

您可以使用它添加数字

例子:

  {{ forloop.counter|add:"1" }}

更多详情请查看doc

【讨论】:

  • 对不起,我帮不上忙。我只是做了一个愚蠢的想法。请你再看一遍问题吗?
  • 如果forloop.counter是偶数,你要跳过+1部分吗?
  • 是的,但这就像第一次迭代 multiCollapseComment1 multiCollapseComment2 第二次 multiCollapseComment3 multiCollapseComment4
猜你喜欢
  • 1970-01-01
  • 2010-11-02
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多