2016-04-12 13 views
0

Ich versuche, Django Paginator verwenden, indem Sie die official documentation folgen. Aber es zeigt nur "Seite von". Was mache ich falsch?Was mache ich falsch mit Django Paginator

Es ist mein 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}) 

Und mein 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

Sind Sie sicher, dass Sie die Ansicht 'post_list' nicht rendern? Bitte posten Sie Ihre URLs und notieren Sie die URL, die Sie in Ihren Browser eingeben. – rnevius

+0

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

+0

keiner dieser URLs ruft Ihre Ansicht auf, so dass Sie entweder eine URL erstellen müssen, um dies zu tun oder Ihre Ansicht auf irgendeine Weise aufzurufen – Sayse

Antwort

2

Sie machen die post_list Ansicht, anstatt die listing Ansicht. Sie haben zwei Möglichkeiten:

  1. Ihre URLs ändern, so dass die Stamm-URL verweist auf die listing Ansicht:

    urlpatterns = [ 
        url(r'^$', views.listing, name='listing'), 
        url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail, name='post_detail'), 
    ] 
    
  2. eine neue URL für die Ansicht listing erstellen.

    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'), 
    ] 
    

Auch hier sollten Sie nur eines dieser Dinge tun, die beide nicht.