2016-12-13 61 views
0

我在我的網站有一個分頁,但它顯示了我像1-19每一頁,我只想顯示只有5頁。 enter image description hereDjango分頁器頁面範圍不顯示所有數字

我該怎麼做?

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 }},您可以使用它限制在五。

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

這裏是另一種解決辦法,如果你有興趣這可能給你一些更多的選擇:Django Pagination Display Issue: all the page numbers show up

最後,這裏是一個非常好的教程,瞭解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(名稱= 'LINK_NAME') DEF LINK_NAME(路徑,PAGE_NUMBER): URL =裏urlparse(路徑) QS = parse_qs(URL [4]) PAGE_NUMBER = STR( page_number) qs ['page'] = page_number return urlunparse((url [0],url [1],url [2],url [3],urlencode(qs),url [5])) ' –

+0

謝謝@elfuego,你能告訴我什麼是失敗的,需要你添加額外的代碼,以及Django的版本是你在使用什麼?我將它部署在生產站點上,沒有遇到任何問題,但僅在1.11上進行了測試。 – LNI

+1

實際的問題是,每當你點擊一個頁面鏈接,一個額外的'&page = X'被添加到鏈接,所以最終你會得到'...?page = X&page = Y ...'。 我的Django版本是2.0.1,我的Python版本是'3.6.2'。 –