Paginate
🟢 Python Django
投稿日: 2026年4月20日9:44
views.py
from django.core.paginator import Paginator
def top(request):
snippets = Snippet.objects.order_by('-created_at',)
#ページネーション
paginator=Paginator(snippets, 10)
#urlからページのパラメータ取得 request.GET.get()
page_number = request.GET.get('page')
#page番号からページオブジェクト作成
page_obj=paginator.get_page(page_number)
context = {"page_obj": page_obj}
return render(request, "snippets/top.html", context)
def snippet_detail(request, snippet_id, page_id):
snippet = get_object_or_404(Snippet, pk=snippet_id)
comments = Comment.objects.filter(commented_to=snippet_id).all()
comment_form = CommentForm()
return render(request, "snippets/snippet_detail.html", {
'snippet': snippet,
'comments': comments,
'comment_form': comment_form,
'pagenum':page_id
})
----------------------------------------------------------------------------------------------------
urls.py
path("<int:snippet_id>/<int:page_id>", views.snippet_detail, name="snippet_detail"),
path("<int:snippet_id>/edit/<int:page_id>", views.snippet_edit, name="snippet_edit"),
----------------------------------------------------------------------------------------------------
top.html(Paging Page )
移動部分
<div class="paginatearea">
<div class="prepage">
{% if page_obj.has_previous %}
<a href='?page=1' class="pagebtn"> ⏪ </a>
<a href='?page={{ page_obj.previous_page_number }}' class="pagebtn"> ◀️ </a>
<a href='?page={{ page_obj.previous_page_number }}'> Previous </a>
{% else %}
 
{% endif %}
</div>
<div class="pageobj">
{{ page_obj }}
</div>
<div class="nextpage">
{% if page_obj.has_next %}
<a href='?page={{ page_obj.next_page_number }}'>Next </a>
<a href='?page={{ page_obj.next_page_number }}' class="pagebtn"> ▶️ </a>
<a href='?page={{ page_obj.paginator.num_pages }}' class="pagebtn"> ⏩ </a>
{% else %}
 
{% endif %}
</div>
</div>
リンク部分
<a href="{% url 'snippet_detail' snippet.id page_obj.number %}">{{ snippet.title }}</a></th>
snippet_detail.html
戻るリンク部分
<div class="snippet-back"><a href='/?page={{ pagenum }}'>🔙 Back to Menu</a></div>
複数のパラメータ対応
パラベータを次に渡せばよいだけ。
<a href='/?page={{ pagenum }}'>はurls.pyに登録がないが。
パラベータを次に渡せばよいだけ。
<a href='/?page={{ pagenum }}'>はurls.pyに登録がないが。
No Comment