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>