Python 从数据库获取数据时,如何在queryset中设置循环范围?

Python 从数据库获取数据时,如何在queryset中设置循环范围?,python,html,django,Python,Html,Django,我正在使用views.py从数据库中获取数据。所有项目都存在于数据库中。我试图在2的范围内做一个循环。因为我在index.html中将项目安排在3列中。但是,当我循环范围2中的项目时,它将在一列中显示所有项目。如何解决这个问题 def index(request): query = request.GET.get('srh') if query: target1 = Destination.objects.filter(title__icontains=query

我正在使用
views.py
从数据库中获取数据。所有项目都存在于数据库中。我试图在2的范围内做一个循环。因为我在
index.html
中将项目安排在3列中。但是,当我循环范围2中的项目时,它将在一列中显示所有项目。如何解决这个问题

def index(request):
    query = request.GET.get('srh')
    if query:
        target1 = Destination.objects.filter(title__icontains=query)

        target1 = Destination.objects.all()
        for field in target1:
            [Destination(img = f'{field.img}',
             title = f'{field.title}') for __ in range(2)]

        context = {'target1': target1}
        return render(request, 'index.html', context)

        else:
            return render(request, 'index.html')
index.html


{target1%中dest1的%1}
{dest1%时为%1}
{%endif%}
{%endfor%}

正如你一再被告知的那样,整个方法都是荒谬的<代码>目标1已经是目标实例的查询集。对于循环和列表理解,绝对没有什么意义,它只会从您已有的实例中创建新的目标实例。特别是当你甚至没有把理解的结果赋给一个变量时,它会被立即扔掉

因此,停止执行此操作,只需获取实例并将其传递给模板:

def index(request):
    query = request.GET.get('srh')
    if query:
        target1 = Destination.objects.filter(title__icontains=query)
    else:
        target1 = Destination.objects.all()

    context = {'target1': target1}
    return render(request, 'index.html', context)
现在,如果希望在模板中包含列,则需要做一些事情来实际创建这些列。您当前的代码中没有这样做;您只有一个div。但是如果您想使用引导CSS,您可以执行以下操作:

<div class="container">
  {% for dest in target1 %}
    {% if forloop.counter0|divisibleby:3 %}<div class="row">{% endif %}
       <div class="col-4">{{ dest1.title }}</div>
    {% if forloop.counter|divisibleby:3 %}</div>{% endif %}
  {% endfor %>
</table>

{target1%中dest的%1}
{%if-forloop.counter0 |可除性比:3%}{%endif%}
{{dest1.title}
{%if-forloop.counter |可除数by:3%}{%endif%}
{%endfor%>

我不明白。请您添加模板以复制一个简单的示例?为什么
target1
声明了两次?
target1
两次,因为我在其中写入内容时使用了
search bar
。这就是为什么第一个
target1
用于搜索栏。但第二个将覆盖第一个ded index.html
<div class="container">
  {% for dest in target1 %}
    {% if forloop.counter0|divisibleby:3 %}<div class="row">{% endif %}
       <div class="col-4">{{ dest1.title }}</div>
    {% if forloop.counter|divisibleby:3 %}</div>{% endif %}
  {% endfor %>
</table>