0

シンプルにしようとします!:)

djangoアプリ内でページネーションを設定しました。ページネーションで設定したページをループするように管理しています。12ページあり、1ページあたり10件のニュース投稿があります。[次へ]をクリックすると、表示したいページ番号がすべて正常に機能します。

ただし、バックエンドからの投稿内のデータが表示されておらず、理由がわかりません。テンプレートからモデルに正しくアクセスしていないためだと思います。とにかくここに私のコード:

Views.py:

def press_list(request, template_name='pressbox/object_list.html', extra_context={}):
    category = PressCategory.objects.get()
    news_items = PressItem.objects.filter(is_active=True)

    paginator = Paginator(news_items, 10)

    page = request.GET.get('page', 1)

    this_page = paginator.page(page)


    page = int(page)

    try:
        this_page = paginator.page(page)
    except(EmptyPage, InvalidPage):
        raise Http404



    extra_context = {
        'category': category,
    'paginator': this_page.object_list,
    'paginator': paginator,
    "current_page_pag": page,
    'this_page': this_page,
    }
    return render_to_response(template_name, extra_context, RequestContext(request))

Pagination_template:

<div class="pag_wrap">
        <ul class='news_paginator'>
        <li class='prev'>{% if this_page.has_previous %}<a href='{{current_url}}?page={{this_page.previous_page_number}}'>&#60;</a>{% else %}<span>&#60;</span>{%endif%}</li>
        {% for page in paginator.page_range %}
        <li class='{% if forloop.last %}last {%endif%}{%ifequal current_page_pag page %}active {%endifequal%}'><a href='{{current_url}}?page={{page}}'>{{page}}</a></li>
        {% endfor %}
        <li class='next'>{% if this_page.has_next %}<a href='{{current_url}}?page={{this_page.next_page_number}}'>&#62;</a>{% else %}<span>&#62;</span>{%endif%}</li>
        </ul>
</div>

ニュース投稿の内容:

 <ul class="article-list">
        {% for object in paginator.page_range %}
                <li class="{{ object.category.slug }}">
                <a href="{{ object.get_absolute_url }}">

                  <img class="news_thumbnail" src="/media/{{object.thumbnail}}" alt="thumbnail" />
              <strong class="article-title">{{ object.title }}</strong>
                  <span class="article-date">{{ object.published_on|date:"M d, Y" }}</span> 
                  {{ object.short_description }}
                 {% comment %} <span class="article-category">{{ object.category.slug }}</span> {% endcomment %}
                </a>
              </li>
    {% endfor %}
            </ul>

現在、コンテンツではなく投稿の数をループしているので、それを実行しているのは-{%for object in paginator.page_range%}行だと確信しています。データへのアクセス方法がわかりません。

どんな助けでも大歓迎です。PythonとDjangoはかなり新しく、これまでに行ったことにかなり感銘を受けました。:)

4

1 に答える 1

4

あなたは通り過ぎthis_page.object_listpaginator'paginator'文脈のように。したがってpaginator、実際oblect_listにはテンプレートにはありません。

ただし、それをテンプレートに渡す必要はありません。むしろ、を利用できるthis_pageため、テンプレートを次のように更新できます。

<ul class="article-list">
    {% for object in this_page.object_list %}
       ... your rendering code ...
    {%endfor%}
</ul>

django 1.4以降では、直接実行できます

{% for object in this_page %}
    ...
{%endfor%}

参照:ビューでのPaginatorの使用

于 2012-11-30T11:51:17.853 に答える