article

Monday, April 13, 2020

Django - How to Paginate with Django and Bootstrap


Django - How to Paginate with Django and Bootstrap


 
#views.py
from django.shortcuts import render, redirect  
from myapp.models import Employee  #models.py

# Create your views here.   
from django.contrib.auth.models import User
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def index(request):
    user_list = User.objects.all()
    page = request.GET.get('page', 1)

    paginator = Paginator(user_list, 3)
    try:
        users = paginator.page(page)
    except PageNotAnInteger:
        users = paginator.page(1)
    except EmptyPage:
        users = paginator.page(paginator.num_pages)

    return render(request, 'user_list.html', { 'users': users })

def emp(request):
    emplist = Employee.objects.all() 
    page = request.GET.get('page', 1)

    paginator = Paginator(emplist, 5)
    try:
        employees = paginator.page(page)
    except PageNotAnInteger:
        employees = paginator.page(1)
    except EmptyPage:
        employees = paginator.page(paginator.num_pages)

    return render(request, 'emp_list.html', { 'employees': employees })
 
#urls.py
from django.contrib import admin  
from django.urls import path  
from myapp import views  
urlpatterns = [  
    path('admin/', admin.site.urls),  
    path('', views.index),
    path('emp', views.emp),
]  
 
#models.py
from django.db import models

# Create your models here.
class Employee(models.Model):  
    name = models.CharField(max_length=100)  
    email = models.EmailField()  
    contact = models.CharField(max_length=15) 
 
    class Meta:  
        db_table = "employee" 
//templates/user_list.html
<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<title>Django - How to Paginate with Django and Bootstrap</title> 
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
</head> 
<body>
<div class="container">
 <div class="row">
  <div class="col-md-12">
        <h4>Django - How to Paginate with Django and Bootstrap</h4>  
    <table id="bootstrapdatatable" class="table table-striped table-bordered" width="100%">
    <thead>
   <tr>
     <th>Username</th>
     <th>First name</th>
     <th>Last name</th>
     <th>Email</th>
   </tr>
    </thead>
    <tbody>
   {% for user in users %}
     <tr>
    <td>{{ user.username }}</td>
    <td>{{ user.first_name }}</td>
    <td>{{ user.last_name }}</td>
    <td>{{ user.email }}</td>
     </tr>
   {% endfor %}
    </tbody>
  </table>

  {% if users.has_other_pages %}
    <ul class="pagination">
   {% if users.has_previous %}
     <li><a href="?page={{ users.previous_page_number }}">«</a></li>
   {% else %}
     <li class="disabled"><span>«</span></li>
   {% endif %}
   {% for i in users.paginator.page_range %}
     {% if users.number == i %}
    <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
     {% else %}
    <li><a href="?page={{ i }}">{{ i }}</a></li>
     {% endif %}
   {% endfor %}
   {% if users.has_next %}
     <li><a href="?page={{ users.next_page_number }}">»</a></li>
   {% else %}
     <li class="disabled"><span>»</span></li>
   {% endif %}
    </ul>
  {% endif %}
  
 </div> 
 </div> 
</div> 
</body> 
</html>
//templates/emp_list.html
<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<title>Django - How to Paginate with Django and Bootstrap</title> 
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
</head> 
<body>
<div class="container">
 <div class="row">
  <div class="col-md-12">
        <h4>Django - How to Paginate with Django and Bootstrap</h4>  
        <h4>Employees</h4>  
    <table id="bootstrapdatatable" class="table table-striped table-bordered" width="100%">
    <thead>
   <tr>
     <th>Name</th>
     <th>Contact</th>
     <th>Email</th>
   </tr>
    </thead>
    <tbody>
   {% for rs_emp in employees %}
     <tr>
    <td>{{ rs_emp.name }}</td>
    <td>{{ rs_emp.contact }}</td>
    <td>{{ rs_emp.email }}</td>
     </tr>
   {% endfor %}
    </tbody>
  </table>

  {% if employees.has_other_pages %}
    <ul class="pagination">
   {% if employees.has_previous %}
     <li><a href="?page={{ employees.previous_page_number }}">«</a></li>
   {% else %}
     <li class="disabled"><span>«</span></li>
   {% endif %}
   {% for i in employees.paginator.page_range %}
     {% if employees.number == i %}
    <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
     {% else %}
    <li><a href="?page={{ i }}">{{ i }}</a></li>
     {% endif %}
   {% endfor %}
   {% if employees.has_next %}
     <li><a href="?page={{ emplist.next_page_number }}">»</a></li>
   {% else %}
     <li class="disabled"><span>»</span></li>
   {% endif %}
    </ul>
  {% endif %}
  
 </div> 
 </div> 
</div> 
</body> 
</html>

Related Post