How to add pagination to Django views

Answered
Jan 05, 2026 848 views 1 answers
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
Answered by linux_expert 1 week, 2 days ago
Bronze 311 rep

Your Answer

You need to be logged in to answer questions.

Log In to Answer