Djangoでは「Paginator」というクラスが用意されている
– 変数 = Paginator(コレクション、レコード数)
– 指定ページのレコードを取り出すには「get_page」メソッドを使う
### Paginatorを使用する
/hello/urls.py
urlpatterns = [
path('', views.index, name='index'),
path('<int:num>', views.index, name='index'),
//
]
※ path(”, views.index, name=’index’)は削除しない
/hello/views.py
from django.core.paginator import Paginator
def index(request, num=1):
data = Friend.objects.all()
page = Paginator(data, 3)
params = {
'title': 'Hello',
'message': '',
'data': page.get_page(num),
}
return render(request, 'hello/index.html', params)
Paginator(data, 3)でQuerySetオブジェクトからPaginatorインスタンスを作成する

/hello/templates/hello/index.html
<body class="container">
<h1 class="display-4 text-primary">{{title}}</h1>
<p>{{message|safe}}</p>
<table class="table">
<tr>
<th>id</th>
<th>name</th>
<th>age</th>
<th>mail</th>
<th>birth</th>
</tr>
{% for item in data %}
<tr>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.age}}</td>
<td>{{item.mail}}</td>
<td>{{item.birthday}}</td>
</tr>
{% endfor %}
</table>
<ul class="pagination">
{% if data.has_previous %}
<li class="page-item">
<a class="page-link" href="{% url 'index' %}">
« first</a>
</li>
<li class="page-item">
<a class="page-link" href="{% url 'index' %}{{data.previous_page_number}}">
« prev</a>
</li>
{% else %}
<li class="page-item">
<a class="page-link">
« first</a>
</li>
<li class="page-item">
<a class="page-link">
« prev</a>
</li>
{% endif %}
<li class="page-item">
<a class="page-link">
{{data.number}}/{{data.paginator.num_pages}}</a>
</li>
{% if data.has_next %}
<li class="page-item">
<a class="page-link" href="{% url 'index' %}{{data.next_page_number}}">
next »</a>
</li>
<li class="page-item">
<a class="page-link" href="{% url 'index' %}{{data.paginator.num_pages}}">
last »</a>
</li>
{% else %}
<li class="page-item">
<a class="page-link">next »</a>
</li>
<li class="page-item">
<a class="page-link">last »</a>
</li>
{% endif %}
</ul>
</body>

これは凄い