Django предоставляет класс Paginator
для разбивки на страницы, проверьте документы здесь: Объекты-пагинаторы .
Итак, в вашем views.py
после
results= list(chain(home_database,pcprograms_database,androidapk_database,androidgames_database,antiruvs_database,systems_database,pcgames_database))
Вы можете написать
paginator = Paginator(results, 25) # Show 25 rows per page
page = request.GET.get('page')
results = paginator.get_page(page)
context={'results': results,
'submitbutton': submitbutton}
return render(request, 'html_file/enterface.html', context)
Следующий шаг в вашем HTML-файле:
{% if submitbutton == 'Search' and request.GET.q != '' %}
{% if results %}
<h1> <small> Results for {{ request.GET.q }} : </small></h1>
<br/><br/>
{% for result in results %}
<label id="label_main_app"> <img style="margin-top:.3%;margin-left:.3%" id="img_main_app_first_screen" src="{{result.app_image.url}}" alt="no image found !" height="160" width="165" > {{result.name}} <br><br> <p id="p_size_first_page"> {{result.app_contect}} <br> <br> <a href="{{ result.page_url }}" type="button" class="btn btn-primary"><big> See More & Download </big> </a> </p>
</label>
{% endfor %}
{% if results %}
<div class="pagination">
<span class="step-links">
{% if results.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ results.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ results.number }} of {{ results.paginator.num_pages }}.
</span>
{% if results.has_next %}
<a href="?page={{ results.next_page_number }}">next</a>
<a href="?page={{ results.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
{% endif %}
{% else %}
<h3> No results for this search </h3>
{% endif %}
{% endif %}
Поскольку объединение нескольких наборов запросов вызывает проблемы с разбиением на страницы, я думаю, вы также должны отсортировать их по общему ключу,поэтому, основываясь на этом ответе SO Ответ на похожую проблему, вам, возможно, придется отсортировать все эти запросы. Поэтому вместо list(chain(
попробуйте следующий код:
from operator import attrgetter
results = sorted(
chain(home_database,pcprograms_database,androidapk_database, ..etc),
key=attrgetter('common_key'))
Вы можете выбрать common_key
, может быть, поле name
в вашем случае?