У меня есть template
, где пользователи передают запрос и выбирают пару флажков (они могут варьироваться от 1 до 100). Затем my view
выполняет следующие действия:
def search(request):
results_list = search(request.GET.get("q", ""), request.GET.getlist("c"))
# Pagination
paginator = Paginator(results_list, 10)
page = request.GET.get("page")
results = paginator.get_page(page)
return render(
request,
"web/search/show.html",
{
"query": query,
"results": results,
},
)
Проблема возникает из-за того, что поиск и представление результатов происходят на одной странице. Поэтому, когда я хочу включить нумерацию страниц в свой шаблон, я должен сделать следующее:
<div class="pagination">
<div class="step-links">
{% if results.has_previous %}
<a href="?page={{ results.previous_page_number }}&{{request.GET.urlencode}}" class="prev-page-link">Previous</a>
{% endif %}
{% if results %}
<span class="current">
Page {{ results.number }} of {{ results.paginator.num_pages }}
</span>
{% endif %}
{% if results.has_next %}
<a href="?page={{ results.next_page_number }}&{{request.GET.urlencode}}" class="next-page-link">Next</a>
{% endif %}
</div>
</div>
Пожалуйста, рассмотрите использование request.GET.urlencode
, потому что когда пользователь хочет перейти к предыдущему или следующемустраница же query
и checkboxes
должны быть пропущены. Тем не менее, это создает ошибку, когда пользователь проходит мимо второй страницы, потому что ?page=3&page=2
продолжает накапливаться. Может кто-нибудь указать мне правильное направление для решения этой проблемы?