Django
Django Image Processing Webapp Part IV

Django Image Processing Webapp Part IV

In this part we will add the pagination in our home page.

Views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.core.paginator import Paginator,PageNotAnInteger, EmptyPage

from .models import ImageEnhance
from .forms import ImageForm

# Create your views here.


# Create your views here.
def imageHome(request):
       
    try:
        images = ImageEnhance.objects.all().order_by('id') 
        
        p = Paginator(images,3)
        print(p.count)
        page_number = request.GET.get('page')
        print(page_number)

        try:
            page_obj = p.get_page(page_number)
        except PageNotAnInteger:
            page_obj = p.page(1)
        except EmptyPage:
            page_obj = p.page(p.num_pages)
        print(page_obj)
        context = {'page_obj':page_obj}
        
        return render(request,'image_home.html',context)
    except:
        return HttpResponse("We do not have any images to show you")
    
def imageForm(request):
...................................................................

image_home.html

{% extends "base.html" %}
{% block content %}
           
<br/>
<br/>
<div class="row">
    {% for im in page_obj.object_list %}
    <div class="row mw-100">
        <div class="card" style="width: 550px;">
            <div class="card-body">
              <h4 class="card-title">
                Original
              </h4>
              <img src="{{ im.image.url }}" width="400" height="400">
            </div>
        </div>

        <div class="card" style="width: 550px;">
            <div class="card-body">
                
              <h4 class="card-title">
                {% if im.filter %}
                <h4> {{ im.filter }} </h4>
                {% else %}
                <h4>To be Processed</h4>
      
                {% endif %}
              </h4>
              <img src="{{ im.image_enhanced.url }}" width="400" height="400">
              <br>
              <small class="card-text">{{im.created_at}} </small>
            </div>
            
        </div>

        
    </div>

    


    
    {% endfor %}

</div>
<center>
  
    <span class="step-links">
        {% if page_obj.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}
  
        <span class="current">
            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
        </span>
  
        {% if page_obj.has_next %}
            <a href="?page={{ page_obj.next_page_number }}">next</a>
            <a href="?page={{ page_obj.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
 
  

</center>

            

        
{% endblock content %}

Output