djangoでブログにページャーを入れてみた
djangoでブログにページャーを入れてみた
出力するデータの件数が増えてくるとどうしても必要になってくるのがページャーです。
djangoでは「Pagenator」をインポートするだけで簡単に作れるみたいです。
View
viewは下の通りです。
「Paginator」のインポートを忘れないようにしましょう。
#--ページャー------------------------------------------
from django.core.paginator import Paginator
.
.
.
def display_blogs(request):
blogs = Blog.objects.all().order_by('created_datetime')
#第一引数にリスト、第二引数に表示する件数を設定
paginator = Paginator(blogs, 10)
#GETで送信されたページの値を取得
current_page = request.GET.get('current_page')
#指定ページのリストを取得
blogs = paginator.get_page(current_page)
context = {
'blogs': blogs
}
return render(request, 'app/display_blogs.html', context)
Template
Templateは下の通りです。
ページャーは下の部分です。
{% extends 'app/base.html' %}
{% block content %}
<!--DELETE---------------------------------------->
<form method="post" action="{% url 'app:delete_blogs' %}" id="delete_blogs">{% csrf_token %}</form>
<div class="float_right"><button type="submit" class="negative_button" form="delete_blogs" onclick='return confirm("選択した項目を削除します。\nよろしいですか?");'>delete</button></div>
<!--CREATE---------------------------------------->
<form method="get" action="{% url 'app:create_blog' %}" id="create_blog"></form>
<div class="float_right"><button type="submit" class="positive_button" form="create_blog">create</button></div>
<!--TABLE----------------------------------------->
<table class = "data_record">
<tr>
<th>title</th>
<th>create date</th>
<th></th>
<th></th>
</tr>
{% for blog in blogs %}
<tr>
<td><a href="{% url 'app:display_blog' blog.id %}">{{ blog.title }}</a></td>
<td>{{ blog.created_datetime }}</td>
<td>
<form method="get" action="{% url 'app:edit_blog' blog.id %}">
<button type="submit" class="neutral_button">edit</button>
</form>
</td>
<td>
<div class="checkbox_container">
<input type="checkbox" name="delete_ids" value="{{ blog.id }}" form="delete_blogs" class="checkbox">
</div>
</td>
</tr>
{% endfor %}
</table>
<div class="pager">
<!-- 前のページへのリンク -->
{% if blogs.has_previous %}
<a href="?current_page={{ blogs.previous_page_number }}">Previous</a>
{% endif %}
<!-- 現在のページ番号と全体のページ数 -->
<span>
{{ blogs.number }} / {{ blogs.paginator.num_pages }}
</span>
<!-- 次のページへのリンク -->
{% if blogs.has_next %}
<a href="?current_page={{ blogs.next_page_number }}">Next</a>
{% endif %}
</div>
{% endblock %}
ディスカッション
コメント一覧
まだ、コメントがありません