legeminus

Taggit+Paginator

Mar 1st, 2021 (edited)
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.24 KB | None | 0 0
  1. def blog(request, tag_slug=None):
  2.     newposts = post.objects.filter(status=True).order_by('created_date').reverse()[:3]
  3.     tagscount = post.tags.most_common()[:6].annotate(post_count=Count('taggit_taggeditem_items'))
  4.     categories = category.objects.all().annotate(post_count=Count('post'))
  5.     posts = post.objects.filter(status=True).all().order_by('created_date').reverse()
  6.     tag = None
  7.     if tag_slug:
  8.         tag = get_object_or_404(Tag, slug=tag_slug)
  9.         posts = post.objects.filter(tags__in=[tag])
  10.     paginator = Paginator(posts, 3)
  11.     page = request.GET.get('page')
  12.     try:
  13.         postd = paginator.page(page)
  14.     except PageNotAnInteger:
  15.         postd = paginator.page(1)
  16.     except EmptyPage:
  17.         postd = paginator.page(paginator.num_pages)
  18.     return render(request, 'site/bloggrid.html',
  19.                   {
  20.                       'posts': posts,
  21.                       'category': category,
  22.                       'tag': tag,
  23.                       'categories': categories,
  24.                       'newposts': newposts,
  25.                       'tagscount': tagscount,
  26.                       'postd': postd,
  27.                       'page': page,
  28.                   })
  29.  
  30.  
  31. {%if postd %}
  32. <div style="position: fixed;bottom:2em;left: 0;right:0;">
  33.     <nav aria-label="...">
  34.         <ul class="pagination justify-content-center">
  35.             {% if postd.has_previous %}
  36.             <li class="page-item">
  37.                 <a href="?page={{ postd.previous_page_number }}{% if request.GET.q %}&q=
  38.                 {{request.GET.q }}{% endif %}" class="page-link"><<</a>
  39.             </li>
  40.             {% endif %}
  41.             {% for n in postd.paginator.page_range %}
  42.             <li class="page-item {% if n == postd.number %}active{% else %}no-active{% endif %}">
  43.                 <a class="page-link" href="?page={{ n }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">{{ n }}</a>
  44.                 {% endfor %}
  45.                 {% if postd.has_next %}
  46.             <li class="page-item">
  47.             <a href="?page={{ postd.next_page_number }}{% if request.GET.q %}&q=
  48.                     {{ request.GET.q }}{% endif %}" class="page-link">>></a>
  49.         </li>
  50.             {% endif %}
  51.         </ul>
  52.     </nav>
  53. </div>
  54. {% endif %}
Add Comment
Please, Sign In to add comment