In this tutorial we will discuss How to Add Pagination in Django Python Web application.
What is Pagination – Pagination is the process of distributing a website’s content across multiple pages.
Django has a built in Paginator class.
How to Use – First we need to import it “Paginator class” from django.core.paginator.
models.py
from django.db import models # Create your models here. class MenuList(models.Model): Menucode= models.IntegerField() MenuType=models.IntegerField() menuname = models.CharField(max_length=100) submenuname = models.CharField(max_length=100) menulink = models.CharField(max_length=100) def __str__(self): return self.menuname objects = models.Manager()
urls.py
from django.contrib import admin from django.urls import path from .views import Menu_list urlpatterns = [ path("",Menu_list,name="Employee"), ]
views.py
from django.shortcuts import render from .models import MenuList from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage # Create your views here. def Menu_list(request): Result_set = MenuList.objects.all() page_list = request.GET.get('page',1) pages = Paginator(Result_set,5) try: result_page = pages.page(page_list) except PageNotAnInteger: result_page = pages.page(1) except EmptyPage: result_page = pages.page(pages.num_pages) return render(request,'menulist.html',{'menulist':result_page})
<html> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <div class="container"> <div class="shadow p-3 mb-5 bg-grey rounded"> <table class="table table-bordered"> <thead> <tr> <th> SLNo </th> <th> Menu Name</th> <th> Sub Menu Name</th> </tr> </thead> <tbody> {% for menu in menulist %} <tr> <td>{{ menu.Menucode }} </td> <td>{{ menu.menuname }} </td> <td> {{ menu.submenuname }} </td> </tr> {% endfor %} </tbody> </table> <ul class="pagination"> {% if menulist.has_previous %} <li class="page-item"><a href="?page={{ menulist.previous_page_number }}">Previous</a></li> {% else %} <li class="page-item disabled"><span>Previous</span></li> {% endif %} {% for k in menulist.paginator.page_range %} {% if menulist.number == k %} <li class="page-item active"><span>{{ k }}<span class="sr-only">(current)</span></span></li> {% else %} <li class="page-item"><a href="?page={{k}}">{{k}}</a></li> {% endif %} {% endfor %} {% if menulist.has_next %} <li class="page-item"><a href="?page={{ menulist.next_page_number }}">Next</a></li> {% else %} <li class="page-item disabled"><span>Next</span></li> {% endif %} </ul> </div> </div> </body> </html>