В общем, не могу прикрутить дефолтный джанговский пагинатор.
Точнее сказать, я его прикрутил, но видимо не так как надо, потому что на главной страничке написано только “Page of .” И все. Помогите, пожалуйста, прикрутить его нормально.
Делал все по документации, и вот что имеется:
views.py
from blog.models import Post from django.views.generic import ListView, DetailView from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import render_to_response class PostListView(ListView): model = Post class PostDetailView(DetailView): model = Post def listing(request): post_list = Post.objects.all() paginator = Paginator(post_list, 1) page = request.GET.get('page') try: pages = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. pages = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. pages = paginator.page(paginator.num_pages) return render_to_response('blog/post_list.html', {"pages": pages})
blog/post_list.html
{% block content %} {% for post in pages %} <h2><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h2> {{ post.full_name|upper }}<br /> {% endfor %} <div class="pagination"> <span class="step-links"> {% if pages.has_previous %} <a href="?page={{ pages.previous_page_number }}">previous</a> {% endif %} <span class="current"> Page {{ pages.number }} of {{ pages.paginator.num_pages }}. </span> {% if pages.has_next %} <a href="?page={{ pages.next_page_number }}">next</a> {% endif %} </span> </div> {% endblock %}
Без пагинации все работает как надо, и имеет такой вид:
views.py
from blog.models import Post from django.views.generic import ListView, DetailView from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger class PostListView(ListView): model = Post class PostDetailView(DetailView): model = Post
blog/post_list.html
{% block content %} {% for post in object_list %} <h2><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h2> <p>Published: {{ post.datetime }}</p> <p>{{ post.content }}</p> <hr> {% endfor %} {% endblock %}