Handle PageNotAnInteger error or Disable the elided notation

I want to make elided page pagination like 1,2,3...8,9,10. So here is my code

in models.py

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()

in views.py

from django.shortcuts import render
from .models import Author
from django.core.paginator import Paginator

def author(request):
    authors = Author.objects.all()
    paginator = Paginator(authors, 10)
    page_number = request.GET.get("page")
    authors_data = paginator.get_page(page_number)
    elided_page = paginator.get_elided_page_range(page_number, on_each_side=3,on_ends=2)
    context = {
        "authors" : authors_data,
        "elided_data" : elided_page,
        }
    return render (request, "authors.html", context)

in author.html

# all authors
  {% for author in authors  %}
   <p> {{author}}</p>
  {% endfor %}

# pagination part
  {% for i in elided_data  %}
    <a href="?page={{i}}">{{i}}</a>
  {% endfor %}

this way I get elided pagination like 1,2,3...9,10 perfectly. But problem is when i click on three dot (...) then it shows me pageNotAnInteger error. Is there any way to handle this error or disable the link of that three dot?

After spending so much time and research I discovered the answer.

so in views.py remove elided_page variable and elided_data key from context dict.

from django.shortcuts import render
from .models import Author
from django.core.paginator import Paginator

def author(request):
    authors = Author.objects.all()
    paginator = Paginator(authors, 2)
    page_number = request.GET.get("page")
    authors_data = paginator.get_page(page_number)

    context = {
        "authors" : authors_data,
        }
    return render (request, "authors.html", context)

and in author.html

 # retrive all authors
  {% for author in authors  %}
   <p> {{author}}</p>
  {% endfor %}


# pagination part
    {% for i in authors.paginator.get_elided_page_range %}
         {% if i == authors.paginator.ELLIPSIS %}
            <span class="page-link">...</span>
        {% else %}
            <a class="page-link" href="?page={{ i }}">{{ i }}</a>
        {% endif %}
    {% endfor %}
Back to Top