Пагинация в django не пагинация постов по 6 постов на странице
после написания представления для моей пагинации в django, кнопка работает нормально, то есть они загружают новые страницы, но проблема в том, что все посты остаются на всех новых страницах, а это не то, что ожидалось. views.py
def ElementLists(request):
vectors = Vectors.objects.filter(status="published").order_by("?")
paginator = Paginator(vectors, 6)
page_number = request.GET.get('page')
vector_paginator = paginator.get_page(page_number)
elementlist.html
<li class="page-item">
{% if vector_paginator.has_previous %}
<a class="page-link" href="?page={{vector_paginator.previous_page_number}}" arialabel="Previous">
<span class="ti-arrow-left">Previous</span>
<span class="sr-only">Previous</span>
</a>
{% endif %}
</li>
<li class="page-item">
{% if vector_paginator.has_next %}
<a class="page-link" href="?page={{vector_paginator.next_page_number}}" aria-label="Next">
<span class="ti-arrow-right">Load More</span>
<span class="sr-only">Next</span>
</a>
{% endif %}
</li>
Вы должны использовать правильный порядок. Сейчас вы используете order_by("?")
, что означает случайный порядок записей. Например, ID по убыванию выглядит так:
def ElementLists(request):
vectors = Vectors.objects.filter(status="published").order_by("-id").all()
paginator = Paginator(vectors, 6)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(request, 'elementlist.html', {'page_obj': page_obj})
Позже я исправил это. при циклическом переборе ваших постов в шаблоне, теперь это должно выглядеть так
перед
{% for post in posts %}
...code here
{% endfor %}
Сейчас
{% for post in posts_paginator %}
...code here
{% endfor %}