11

djangoのページネーションのページ表示を改善する方法はありますか? [doc][1] に従って作成しましたが、ページ番号表示を整理する簡単な方法があることを願っています。

現在、すべてのページが表示されています。たとえば、10 ページあるとすると、
前へ 1 2 3 4 5 6 7 8 9 10 次へ

100 個ある場合は、100 個すべてが表示されますが、これは非常にクレイジーです。

短く表示する簡単な方法はありますか?

例:

前へ 1 2 3 ... 67 ... 98, 99, 100 次へ (67 が現在のページです)

前へ 1 2 3 ... 65 66 67 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

ありがとうございました。

4

2 に答える 2

4

私は " Paginator Tag " を使用して、あなたが探しているページネーションのスタイル (しばしば "Digg スタイル" ページネーションと呼ばれます) を実現することに成功しました。使い方は記事「Django でのページネーションのレシピ」で説明されています。

于 2011-04-18T23:13:20.630 に答える