2016-04-12 11 views
0

私はdjango paginatorをofficial documentationに従って使用しようとしています。しかし、それは "ページの"だけを表示します。 私は何が間違っていますか?django paginatorで何が間違っていますか

私のviews.pyがあります:

from django.shortcuts import render, get_object_or_404, render_to_response 
from django.utils import timezone 
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 
from .models import Post 

def post_list(request): 
    posts = Post.objects.order_by('-created_date') 
    return render(request, 'blog/post_list.html', {'posts': posts}) 

def post_detail(request, pk): 
     post = get_object_or_404(Post, pk=pk) 
     return render(request, 'blog/post_detail.html', {'post': post}) 

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

    page = request.GET.get('page') 
    try: 
     articles = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     articles = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     articles = paginator.page(paginator.num_pages) 

    return render(request, 'blog/post_list.html', {'articles': articles}) 

そして、私のpost_list.html:

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

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

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

あなたは 'post_list'ビューをレンダリングしていませんか? URLを投稿し、ブラウザに入力したURLをメモしてください。 – rnevius

+0

urlpatterns = [ url(r '^ $'、views.post_list、name = 'post_list')、 url(r '^ post /(?P [0-9] +)/ $'、views.post_detail 、name = 'post_detail')、 ] – whoisazamat

+0

これらのURLのどちらもビューを呼び出さないため、URLを作成して何らかの方法でビューを呼び出す必要があります – Sayse

答えて

2

あなたはむしろlistingビューよりも、post_listビューをレンダリングしています。

urlpatterns = [ 
    url(r'^$', views.listing, name='listing'), 
    url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail, name='post_detail'), 
] 
  • listingビューの新しいURLを作成します。listingビューへのルートURLのポイントは、そのよう

    1. があなたのURLを変更

      :2つのオプションがあります。

      urlpatterns = [ 
          url(r'^$', views.post_list, name='post_list'), 
          url(r'^listing/$', views.listing, name='listing'), 
          url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail, name='post_detail'), 
      ] 
      

    もう一度、あなただけのこれらのもののいずれかを実行し、両方ではないはずです。

  • 関連する問題