2016-12-13 5 views
0

私のサイトにはページ番号がありますが、1〜19のようなページが表示されますが、5ページしか表示しません。 enter image description hereDjango paginatorすべての数字を表示しないページ範囲

どうすればいいですか?

views.py

paginator = Paginator(object_list, new_number_of_list) 

    page = request.GET.get('page') 

    try: 
     Items = paginator.page(page) 
    except PageNotAnInteger: 
     Items = paginator.page(1) 
    except EmptyPage: 
     Items = paginator.page(paginator.num_pages) 

    variables = RequestContext(request, {"Items": Items, 
             "ForItemCount": ForItemCount, 
             "page": page, 
             }) 
    return render(request, 'templates/Core/resource_base.html', 
          variables) 

私pagination.html

<div class="pagination p1"> 
    <span class="step-links"> 
    <ul> 

      {% for l in Items.paginator.page_range %} 
      <li><a href="?page={{forloop.counter}}">{{forloop.counter}}</a></li> 
      {% endfor %} 



    </ul> 
    </span> 
</div> 

答えて

3

あなたはすでにそこに{{ forloop.counter }}を持っている、あなたは5にそれを制限するためにそれを使用することができます。 Django Pagination Display Issue: all the page numbers show up:ここ

 {% for l in Items.paginator.page_range %} 
     {% if forloop.counter < 5 %} 
      <li><a href="?page={{forloop.counter}}">{{forloop.counter}}</a></li> 
     {% endif %} 
     {% endfor %} 

は、もし興味があるなら、あなたにいくつかのより多くの選択肢を与えるかもしれないもう一つのソリューションです。

最後に、djangoが提供するページ分割の速度を上げるためのチュートリアルがあります:https://simpleisbetterthancomplex.com/tutorial/2016/08/03/how-to-paginate-with-django.html

1

https://medium.com/@sumitlni/paginate-properly-please-93e7ca776432が役立つかどうかを確認してください。コードは「近隣」に10を使用しますが、タグを使用すると5に変更できます。

+0

これは良い解決策ですが、あなたの 'link_name'はうまく動作しません。 このバージョンは正しい動作: '@のregister.filter(NAME = 'LINK_NAME') DEF LINK_NAME(パス、PAGE_NUMBER): URL = urlparse(パス) 適量=のparse_qs(URL [4]) PAGE_NUMBER = STR( (0)、url [1]、url [2]、url [3]、urlencode(qs)、url [5])) ' –

+0

qt ['page'] = page_number返信urlunparseありがとうございました@elfuego、何が失敗したのか、あなたは追加のコードを追加する必要があります、あなたが使っていたDjangoのバージョンは何ですか?私はこれを実稼働現場に配備し、問題は発生しませんでしたが、1.11でテストしていました。 – LNI

+1

実際の問題は、ページリンクをクリックするたびに、リンクに追加の '&page = X'が追加されるため、最終的には' ...?page = X&page = Y ... 'となります。 私のDjangoバージョンは2.0.1、私のPythonバージョンは '3.6.2'です。 –

関連する問題