2011-11-21 38 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/)。沒有額外的包。 –