2011-11-21 88 views
0

我是Django的新手。我使用的简单分页该Django提供,但我需要分页页这样的:Django - 在Django中分页1.3

上一个1 2 3 4 5 6 ... 320

或者

上一页120 121 123最后

有一些代码可以在Django 1.3中重复使用来实现这个目标吗?

+0

什么正是你想做什么? – juliomalegria

+0

感谢您的回复@ julio.alegria。我需要比Django分页更详细的内容(https://docs.djangoproject.com/en/1.3/topics/pagination/)。如上所述,我需要以这种方式显示页面。 –

回答

1

让我们supose我们有一个观点:

dev showPage(request,pg): 

其中PG页码您正在寻找在这一刻。然后,我们需要一些代码来获取查询集(或物体),并创建分页程序对象:

pg = int(pg) 
objects = range(320) 
p = Paginator(objects, 15) 
page = p.page(pg) 

嗯,那你需要得到:

Prev 1 2 3 4 5 6 ... 320 

被发送到模板像PAG的列表

pags = [] #var to be sent to template 
if pg-1 in p.page_range: pags.append(('Prev', p.page(pg - 1) ,)) 
for n in range(pg-2, pg+2): 
    if n in p.page_range: pags.append((n, p.page(pg - 2) ,)) 
if p.end_index() not in range(pg-2, pg+2): 
    pags.append(('...', None ,)) 
    pags.append((p.end_index(), p.end_index(),)) 

现在送的PAG到您的模板。和渲染成类似:

<ul> 
{% for label, npag in pags %} 
    <li> 
    {%if npag %} <a href="asjflasdjf/{{npag}"}>{%endif%} 
    label 
    {%if npag %} </a> {%endif%} 
    </li> 
{% endfor %} 
</ul> 

Prev 120 121 122 123 124 Last 

的解决方案是一样的。用CSS装饰一下,然后你就可以得到它。

另外,例如,可以为了分配当前页面类来获得它大胆的风格:

{%if npag %} 
    <a href="asjflasdjf/{{npag}"  
     {% if npag == pg %} class="bold-style" {%endif%} 
    }> 
{%endif%} 
1

This is你在找什么。

+0

或[this](http://www.tummy.com/Community/Articles/django-pagination/)。没有额外的包。 –