Для создания таблицы с лимитом и номером страницы в Django вы можете использовать функцию пагинации.
1. Пагинация в Django
Для начала вам потребуется установить Django Pagination. Это можно сделать с помощью команды pip install django-pagination
.
2. Включение Pagination в Django проект
В файле settings.py
, в раздел INSTALLED_APPS
, добавьте pagination
.
INSTALLED_APPS = [ ... 'pagination', ... ]
3. Создание представления
Вам нужно создать представление, которое будет отображать таблицу с лимитом и номером страницы. Вот пример представления:
from django.shortcuts import render from django.core.paginator import Paginator def table_view(request): items_list = YourModel.objects.all() # Получить все объекты paginator = Paginator(items_list, 10) # Разбиваем на страницы, по 10 объектов на каждую страницу page_number = request.GET.get('page') # Получаем номер страницы из параметров GET page_obj = paginator.get_page(page_number) # Получаем объект страницы context = { 'page_obj': page_obj, } return render(request, 'table.html', context)
4. Создание шаблона для отображения таблицы
В шаблоне table.html
вы можете отобразить таблицу и лимит номеров страниц. Вот пример:
<table> <thead> <tr> <th>Column 1</th> <th>Column 2</th> </tr> </thead> <tbody> {% for item in page_obj %} <tr> <td>{{ item.column1 }}</td> <td>{{ item.column2 }}</td> </tr> {% endfor %} </tbody> </table> <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 }}</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>
5. Подключение URL к представлению
Не забудьте подключить ваше представление к URL. В файле urls.py
добавьте следующие строки:
from django.urls import path from . import views urlpatterns = [ path('table/', views.table_view, name='table'), ]
Теперь, когда вы посещаете страницу, содержимое таблицы будет ограничено заданным лимитом с номером страницы, а пагинация отображает ссылки на предыдущую и следующую страницы, а также на первую и последнюю страницы.