2011-04-18 40 views
8

有什么办法让页面显示django分页更好?我跟着[doc] [1]创建它,但希望有简单的方法来组织页码显示。Django分页显示问题:所有页码显示

目前,它示出了所有的页面,说我有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

你看了管理员密码? paginator有相当不错的 – Jerzyk 2011-04-18 22:44:43

回答