2016-05-21 4 views
0

Ich arbeite an meiner ersten Django-Anwendung und insbesondere an der Seitennummerierung. Vor dem Hinzufügen der Seitennummerierung, als ich weiterging:Django Wie bekomme ich die erste Seite von Elementen, wenn ich eine URL ansteuere?

http://localhost:8000/posts 

Ich hätte mir alle Artikel angezeigt.

Aber jetzt habe ich Paginierung hinzugefügt und alles funktioniert gut. Ich zeige nur 2 Artikel pro Seite an und ich habe 5 Artikel. Alles funktioniert gut, wenn ich die Seite getroffen:

http://localhost:8000/posts?page=1 
http://localhost:8000/posts?page=2 
http://localhost:8000/posts?page=3 

Aber wenn ich getroffen:

http://localhost:8000/posts 

ich folgende Fehlermeldung haben:

That page number is not an integer 

Das ist mein view.py ist:

def posts(request): 
    all_posts = Post.objects.order_by('published_date') 
    paginator = Paginator(all_posts, 2) 
    page = request.GET.get("page") 
    try: 
     posts = paginator.page(page) 
    except PageNotAnInteger: 
     posts = paginator.page(page) 
    except EmptyPage: 
     posts = paginator.page(paginator.num_pages) 

    context = { 
     'posts': posts, 
    } 
    return render(request, 'my_blog/posts.html', context) 

Wie kann ich von diesem Problem fahren und beim Treffen: http://localhost:8000/posts die erste Seite mit angezeigt

Antwort

4

Das Problem ist in der PageNotAnInteger Ausnahmebehandlung, sollte es sein 1 statt page:

try: 
    posts = paginator.page(page) 
except PageNotAnInteger: 
    posts = paginator.page(1) 
except EmptyPage: 
    posts = paginator.page(paginator.num_pages) 
1

Versuch zu ersetzen:

except PageNotAnInteger: 
     posts = paginator.page(page) 

durch

except PageNotAnInteger: 
     posts = paginator.page(1) 

Besondere Zustimmung

Verwandte Themen