Paginate ListView Results

Paginate object lists in class-based views.


# models.py

from django.db import models

class Item(models.Model):
    name = models.CharField(max_length=120)
  

# admin.py

from django.contrib import admin
from .models import Item

@admin.register(Item)
class ItemAdmin(admin.ModelAdmin):
    list_display = ("name",)
  

# views.py
from django.views.generic import ListView
from .models import Item
class ItemList(ListView):
    model = Item
    paginate_by = 10
    template_name = "items/list.html"
  

# templates/items/list.html
<ul>
  {% for it in object_list %}
  <li>{{ it.name }}</li>
  {% endfor %}
</ul>
<nav aria-label="Page nav">
  <ul class="pagination">
    <li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">Prev</a></li>
    <li class="page-item disabled"><span class="page-link">Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}</span></li>
    <li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">Next</a></li>
  </ul>
</nav>
  
Explanation:
  • Set paginate_by on the ListView.
  • Use is_paginated and page_obj in the template.
  • Category Views (FBV & CBV)
  • Total Views 926
  • Last Modified 13 December, 2025
  • Tags #cbv #pagination #listview #views
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.