【发布时间】:2021-02-22 05:21:59
【问题描述】:
我想在我网站的搜索结果页面上实现分页。
我的 Django 项目有几个具有不同模型的应用程序,搜索将在每个表中查找结果。
例如:
# views.py
def search(request):
queryset_list_ip_sensor = Ip_sensor.objects.all()
queryset_list = ControlValves.objects.all()
queryset_list_water_quality_sensor = Water_quality_sensor.objects.all()
context = {
'ip_sensors': result_list_ip_sensor,
'controlvalves': result_list_control_valves_2,
'water_quality_sensor': result_list_water_quality_sensor,
'values': request.GET,
'keywords': keywords
}
return render(request, 'pages/search.html', context)
我是这样实现分页的:
# views.py
def search(request):
# ...
result = (result_list_ip_sensor,
result_list_control_valves,
result_list_water_quality_sensor)
paginator = Paginator(result, 1)
page = request.GET.get('page')
paged_queries = paginator.get_page(page)
context_pagination = {'ip_sensors': result_list_ip_sensor,
'controlvalves': result_list_control_valves_2,
'water_quality_sensor': result_list_water_quality_sensor,
'queries': paged_queries,
'keywords': keywords,
'values': request.GET
}
return render(request, 'pages/search.html', context_pagination)
-
在分页之前,我曾经显示这样的结果:
{% if ip_sensors %} {% for ip_sensor in ip_sensors %} <div class="col-12 col-sm-12 col-md-4 col-lg-4 col-xl-4 mb-4"> <div class="card"> <div class="card-header"> I/P Sensor </div> <img class="card-img-top" src="{{ ip_sensor.cover.url }}" alt=""> <div class="card-body"> <div class="text-center"> <h4 class="text-dark">{{ ip_sensor.title }}</h4> <p> {{ ip_sensor.description | truncatewords:10 }}</p> </div> <hr> <div class="row py-2 text-dark"> <div class="col-6"> Product Name: {{ ip_sensor.product_name | truncatewords:2 }}</div> <div class="col-6"> Usage: {{ ip_sensor.usage | truncatewords:4}}</div> </div> <hr> <a href="{% url 'ip_sensor_item' ip_sensor.title %}" class="btn btn-light btn-block">More Info</a> </div> </div> </div> {% endfor %} {% endif %} {% if controlvalves %} {% for controlvalve in controlvalves %} <div class="col-12 col-sm-12 col-md-4 col-lg-4 col-xl-4 mb-4"> <div class="card"> <div class="card-header"> Control Valves </div> <img class="card-img-top" src="{{ controlvalve.cover.url }}" alt=""> <div class="card-body"> <div class="text-center"> <h4 class="text-dark">{{ controlvalve.title }}</h4> <p> {{ controlvalve.description | truncatewords:10 }}</p> </div> <hr> <div class="row py-2 text-dark"> <div class="col-6"> Product Name: {{ controlvalve.product_name | truncatewords:2 }}</div> <div class="col-6"> Usage: {{ controlvalve.usage | truncatewords:4}}</div> </div> <hr> <a href="{% url 'valve' controlvalve.title %}" class="btn btn-light btn-block">More Info</a> </div> </div> </div> {% endfor %} {% endif %} {% if water_quality_sensor %} {% for w_q_sensor in water_quality_sensor %} <div class="col-12 col-sm-12 col-md-4 col-lg-4 col-xl-4 mb-4"> <div class="card"> <div class="card-header"> Water Quality Sensor<br> </div> <img class="card-img-top" src="{{ w_q_sensor.cover.url }}" alt=""> <div class="card-body"> <div class="text-center"> <h4 class="text-dark">{{ w_q_sensor.title }}</h4> <p> {{ w_q_sensor.description | truncatewords:10 }}</p> </div> <hr> <div class="row py-2 text-dark"> <div class="col-6"> Product Name: {{ w_q_sensor.product_name | truncatewords:2 }}</div> <div class="col-6"> Usage: {{ w_q_sensor.usage | truncatewords:4}}</div> </div> <hr> <a href="{% url 'water_sensor_item' w_q_sensor.title %}" class="btn btn-light btn-block">More Info</a> </div> </div> </div> {% endfor %} {% endif %} -
搜索结果可能包含来自任何表(模型)的项目。
-
每个项目都有自己的页面和URL,在搜索结果页面中应该有一个链接
如何显示结果并为其定义链接?
【问题讨论】:
标签: python django pagination django-pagination