Обработка ошибки PageNotAnInteger или отключение элиминированной нотации
Я хочу сделать ускоренную пагинацию страниц типа 1,2,3...8,9,10. Вот мой код
в models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
в файле 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)
в файле 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 %}
Таким образом я получаю ускоренную пагинацию типа 1,2,3...9,10 идеально. Но проблема в том, что когда я нажимаю на три точки (...), то появляется ошибка pageNotAnInteger. Есть ли какой-нибудь способ справиться с этой ошибкой или отключить ссылку на три точки?
После того, как я потратил столько времени и исследований, я нашел ответ.
поэтому в views.py удалите переменную elided_page и ключ elided_data из контекстного диктанта.
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)
и в файле 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 %}