Не срабатывает пагинация. В чём причина?
У меня не срабатывает пагинация вообще, как будто её и нет. Подскажите пожалуйста в чём причина?
в views.py
def paginator(request):
mebels = Mebel.objects.all()
pag = Paginator(mebels, 5)
page_number = request.GET.get("page")
page_obj = pag.get_page(page_number)
return render(
request,
"paginator.html",
{
"page_obj": page_obj
}
)
в urls.py(в настройках приложения)
path('paginator', views.paginator, name='paginator')
в settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'django.pagination.LimitOffsetPagination',
'PAGE_SIZE': 5
}
INSTALLED_APPS = ['...', 'django.core.paginator']
в paginator.html
{% extends 'base.html' %}
{% block content %}
{% for mebels in page_obj %}
{{ mebels.full_name|upper }}<br>
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1">« 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 »</a>
{% endif %}
</span>
</div>
{% endblock %}
Вот эта реализация у меня.
Ошибок не выдаёт, но и пагинации постраничной не происходит. html страница выдаётся целиком, как и без этой реализации.
Попробовала ещё вот эту реализацию постраничной пагинации на основе классов с другим html файлом:
в views.py
class MebelListView(ListView):
model = Mebel
template_name = 'app_1/show_page.html'
context_object_name = 'mebels'
paginate_by = 5
paginated_orphans = 5
def get_queryset(self):
tag_name = self.kwargs["current_page"]
return models.Mebel.object.filter(tags__slug=tag_name).distinct()
def get_context_data(self, **kwargs):
context = super().get_context_data
current_page = context.pop('page_obj', None)
context["current_page"] = current_page
return context
в urls.py(в настройках приложения)
path('show_page', views.MebelListView.as_view(), name='show_page')
в settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'django.pagination.LimitOffsetPagination',
'PAGE_SIZE': 5
}
INSTALLED_APPS = ['...', 'django.core.paginator']
в show_page.html
{% extends 'base.html' %}
{% block content %}
<h1 align="center">Вся наша мебель</h1>
{% if mebels %}
<div class="row justify-content-center">
<div class="col-auto">
<table class="table table-responsive">
<thead class="thead-inverse">
<tr>
<th scope="col">#</th>
<th scope="col">Цена</th>
<th scope="col">Описание</th>
</tr>
</thead>
<tbody>
{% for mebel in mebels %}
<tr>
<td>{{current_page.start_index|add:forloop.counter0}}</td>
<th scope="row"><a href={{mebel.link}}>{{mebel.price}}</a></th>
<td>{{mebel.description}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
<nav>
<ul class="pagination">
{% if current_page.has_previous %}
<li class="page-item"><a class="page-link" href="?page={{current_page.previous_page_number}}">Previous</a></li>
{% endif %}
{% for page in paginator.page_range %}
<li class="page-item {% if page == current_page.number %}active{% endif %}">
<a class="page-link" href="?page={{page}}">{{page}}</a>
</li>
{% endfor %}
{% if current_page.has_next %}
<li class="page-item"><a class="page-link" href="?page={{current_page.next_page_number}}">Next</a></li>
{% endif %}
</ul>
</nav>
{% endif %}
</div>
</div>
{% endblock %}
С этой реализацией выходит всё то же самое - без ошибок, но и без пагинации.
Я недавно в программировании и с пагинацией сталкиваюсь впервые. Помогите пожалуйста найти ошибку и исправить её. Заранее благодарю)