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_byon the ListView. -
Use
is_paginatedandpage_objin the template.
- Category Views (FBV & CBV)
- Total Views 926
- Last Modified 13 December, 2025
- Tags #cbv #pagination #listview #views
Previous snippet
Custom 404 and 403 Error Views
Next snippet