2011-04-18 12 views
8

दिखाते हैं क्या डीजेंगो पेजिनेशन के पेज डिस्प्ले को बेहतर बनाने का कोई तरीका है? मैंने इसे बनाने के लिए [डॉक्टर] [1] का पालन किया, लेकिन उम्मीद है कि पेज नंबर डिस्प्ले को व्यवस्थित करने का एक आसान तरीका है।डीजेगो पेजिनेशन डिस्प्ले इश्यू: सभी पेज नंबर

वर्तमान में, यह सभी पृष्ठों से पता चलता मैं 10 पृष्ठों है कहते हैं, तो
पिछला 1 2 3 4 5 6 7 8 9 10 अगले

यदि वहाँ 100 है, तो यह सभी 100, दिखाएगा जो बहुत पागल है।

क्या इसे कम करने के लिए कोई आसान तरीका है?

उदाहरण:

पिछला 1 2 3 ... ... 98, 99, 100 अगले (67 वर्तमान पृष्ठ है)

पिछला 1 2 3 ... 65 66 68 69 ... 100 अगला

इसे उपरोक्त उदाहरणों की तरह दिखने की ज़रूरत नहीं है, लेकिन बस यह नहीं चाहते कि यह बिना किसी सीमा के प्रत्येक पृष्ठ संख्या को प्रदर्शित करे।

बस डॉक्टर की तरह, मैंने नीचे कोड का उपयोग करके अपना अंकन बनाया।

खाका फ़ाइल

{% if is_paginated %} 
<div id="pagination"> 
<ul> 
    {% if page_obj.has_previous %} 
     <li> <a href="?page={{page_obj.previous_page_number}}">Previous</a> </li> 
    {% else %} 
     <li> Previous</li> 
    {% endif %} 
    {% for page_number in paginator.num_pages|template_range %} 
     {% ifequal page_number page_obj.number %} 
      <li class="currentpage">{{page_number}}</li> 
     {% else %} 
      <li> <a href="?page={{page_number}}">{{page_number}}</a> </li> 
     {% endifequal %} 
    {% endfor %} 
    {% if page_obj.has_next %} 
     <li> <a href="?page={{page_obj.next_page_number}}">Next</a></li> 
    {% else %} 
     <li> Next </li> 
    {% endif %} 
</ul> 
</div> 
{% endif %} 

Views.py

news = News.active.all().order_by("-created_at") 
paginator = Paginator(news, 15) 

is_paged = False 
page = None 

try: 
    paginator.validate_number(currpage) 
except (EmptyPage, InvalidPage): 
    #return bad_or_missing(request, ("Invalid page number")) 
    currpage = paginator.num_pages 



is_paged = paginator.num_pages > 1 
page = paginator.page(currpage) 

ctx = RequestContext(request, { 
    'all_news_list' : page.object_list, 
    'is_paginated' : is_paged, 
    'page_obj' : page, 
    'paginator' : paginator, 
    'featured_categories' : featured_categories, 
}) 

response = render_to_response(template_name, context_instance=ctx) 
return response 

धन्यवाद।

+0

आप व्यवस्थापक कोड पर ध्यान दिया है देखते हैं? पेजिनेटर बहुत अच्छा है – Jerzyk

उत्तर

4

मैंने "Paginator Tag" का उपयोग सफलतापूर्वक सफलता के साथ किया है जिसे आप ढूंढ रहे हैं (जिसे अक्सर "डिग-स्टाइल" पेजिनेशन कहा जाता है) की शैली प्राप्त करने के लिए। "A Recipe for Pagination in Django" आलेख में उपयोग समझाया गया है।

+0

धन्यवाद, यह बहुत अच्छा काम करता है। – DavidL

संबंधित मुद्दे