How to add pagination to Django views
Answered
36
I have a list view with hundreds of items. How do I add pagination to show only 10 items per page?
F
Asked by
fatima_dev
Silver
•
169 rep
1 Answer
13
Function-based view
from django.core.paginator import Paginator
def article_list(request):
articles = Article.objects.all()
paginator = Paginator(articles, 10) # 10 per page
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(request, 'articles/list.html', {'page_obj': page_obj})
Template pagination
<div class="pagination">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}">Previous</a>
{% endif %}
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">Next</a>
{% endif %}
</div>
L
Bronze
•
311 rep
Your Answer
You need to be logged in to answer questions.
Log In to Answer