カテゴリごとのページネーションの実装
PythonのDjangoを使ってブログを作成しています。
只今カテゴリごとにページネーション機能を使って1ページごとに1件ずつ表示する機能を実装しようとしているのですが、
カテゴリ全件を取得してしまってしまいます。
該当のソースコード
python
1from django.shortcuts import render, get_object_or_404 2from .models import Post 3from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 4from django.views import generic 5 6 7 8# Create your views here. 9def paginate_queryset(request, queryset, count): 10 11 paginator = Paginator(queryset, count) 12 page = request.GET.get('page',1) 13 try: 14 page_obj = paginator.page(page) 15 except PageNotAnInteger: 16 page_obj = paginator.page(1) 17 except EmptyPage: 18 page_obj = paginator.page(paginator.num_pages) 19 return page_obj 20 21def post_list(request): 22 posts = Post.objects.all() 23 page_obj = paginate_queryset(request, posts, 1) 24 print(page_obj.count) 25 return render(request, 'blog.html', { 26 'posts': posts, 27 'post_list': page_obj.object_list, 28 'page_obj': page_obj, 29 }) 30 31 32def PostDetail(request, pk): 33 article = get_object_or_404(Post,id=pk) 34 35 return render(request, 'article.html',{ 36 'article': article 37 }) 38 39def Big_List(request): 40 Big_Category = Post.objects.filter(category__parent__name='Python') 41 page_obj = paginate_queryset(request, Big_Category, 1) 42 print(page_obj.object_list,) 43 return render(request, 'Category.html', { 44 'bigs':Big_Category, 45 'post_list': page_obj.object_list, 46 'page_obj': page_obj, 47 })
HTML
1{% extends 'layout.html' %} 2 3{% load staticfiles %} 4 5{% block body %} 6 7<div class="container "> 8 9<main > 10 <div class="offset-md-4 fixed-center "> 11 {% for big in bigs %} 12 <div class="card justify-content-center mt-5 ml-0 w-auto" > 13 <a href="{% url 'MyBlog:detail' big.id %}"></a> 14 <div class="card-header bg-dark text-white"> 15 <a href="{% url 'MyBlog:detail' big.id %}" class="text-reset"> 16 <h3 class="card-title">{{ big.title }}</h3> 17 </a> 18 </div> 19 <div class="card-body"> 20 <h5><p class="card-text">{{ big.text_to_markdown | safe | truncatechars_html:10 | linebreaksbr }}</p></h5> 21 </div> 22 <div style="text-align: right;"> 23 <a href="{% url 'MyBlog:detail' big.id %}">記事を読む</a> 24 </div> 25 </div> 26{% endfor %} 27 28 29 <div class=" mt-4 "> 30 31<ul class="pagination justify-content-center" > 32 <!-- 前へ の部分 --> 33 {% if page_obj.has_previous %} 34 <li class="page-item"> 35 <a class="page-link" href="?page={{ page_obj.previous_page_number }}"> 36 <span aria-hidden="true">前へ</span> 37 </a> 38 </li> 39 {% endif %} 40 41 <!-- 数字の部分 --> 42 {% for num in page_obj.paginator.page_range %} 43 {% if page_obj.object_list == num %} 44 <li class="page-item active"><a class="page-link" href="#!">{{ num }}</a></li> 45 {% else %} 46 <li class="page-item"><a class="page-link" href="?page={{ num }}">{{ num }}</a></li> 47 {% endif %} 48 {% endfor %} 49 50 <!-- 次へ の部分 --> 51 {% if page_obj.has_next %} 52 <li class="page-item"> 53 <a class="page-link" href="?page={{ page_obj.next_page_number }}"> 54 <span aria-hidden="true">次へ</span> 55 </a> 56 </li> 57 {% endif %} 58</ul> 59</div> 60 61 </div> 62</main> 63 64</div> 65 66{% endblock %}
補足情報(FW/ツールのバージョンなど)
・Windows10
・Python3.6.8
・Django2.2

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/20 13:20