0

Djangoは初めてです。Djangoが提供する単純なページ付けを使用していますが、次のようなページをページ付けする必要があります。

前へ123 4 5 6 ... 320

または

前120121122123最後

これを達成するためにDjango1.3で再利用する準備ができているコードがいくつかありますか?

4

2 に答える 2

1

ビューがあるとしましょう:

dev showPage(request,pg):

pg は、現在表示しているページ番号です。次に、クエリセット (またはオブジェクト) を取得して paginator オブジェクトを作成するためのコードが少し必要です。

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

さて、あなたが得る必要があるのは:

Prev 1 2 3 4 5 6 ... 320

pagsのようなリストをテンプレートに送信します:

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(), ) )

ページをテンプレートに送信します。そして、次のようなものにレンダリングします:

<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%}
于 2011-11-21T21:56:28.670 に答える
1

これはあなたが探しているものです。

于 2011-11-21T21:37:57.307 に答える