2

django-paginationをいじり始めたところです。これは、プロジェクトの 1 つに使用している他のサードパーティ アプリに含まれています。

実際のアプリをハックすることなく、django-pagination 内のpagination.htmlテンプレートをカスタム バージョンに置き換えることが可能かどうかは誰にもわかりませんか? ドキュメントには何も言及されておらず、pagaination.html はtemplatetag (paginate()) 内にハードコーディングされています。経由で設定されたテンプレートをオーバーライドできるメカニズムがあるかどうか疑問に思っていました

register.inclusion_tag('pagination/pagination.html', takes_context=True)(
paginate)

自分のアプリ内から?

4

3 に答える 3

1

主にページネーションはテンプレート「ページデザイン」を使用します。デフォルトのdjangoテンプレートはテンプレートのURLを必要としません

from django.core.paginator import Paginator, InvalidPage, EmptyPage

def listing(request):
    contact_list = Contacts.objects.all()
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page

    # Make sure page request is an int. If not, deliver first page.
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    # If page request (9999) is out of range, deliver last page of results.
    try:
        contacts = paginator.page(page)
    except (EmptyPage, InvalidPage):
        contacts = paginator.page(paginator.num_pages)

    return render_to_response('list.html', {"contacts": contacts})

テンプレート list.html には、オブジェクト自体からの興味深い情報とともに、ページ間のナビゲーションを含める必要があります。

{% for contact in contacts.object_list %}
    {# Each "contact" is a Contact model object. #}
    {{ contact.full_name|upper }}<br />
    ...
{% endfor %}

<div class="pagination">
    <span class="step-links">
        {% if contacts.has_previous %}
            <a href="?page={{ contacts.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
        </span>

        {% if contacts.has_next %}
            <a href="?page={{ contacts.next_page_number }}">next</a>
        {% endif %}
    </span>
</div>

https://docs.djangoproject.com/en/1.3/topics/pagination/

于 2012-09-26T13:29:32.097 に答える