Как использовать нумерацию страниц в общих представлениях на основе классов? - PullRequest
2 голосов
/ 30 июля 2011

Я пытаюсь реализовать разбиение на страницы в общем представлении на основе классов, и, как я это сделал, это не работает.

urls

url(r'^cat/(?P<category>[\w+\s]*)/page(?P<page>[0-9]+)/$',
    CategorizedPostsView.as_view(), {'paginate_by': 3}),

view

class CategorizedPostsView(ListView):
    template_name = 'categorizedposts.djhtml'
    context_object_name = 'post_list'

    def get_queryset(self):
        cat = unquote(self.kwargs['category'])
        category = get_object_or_404(ParentCategory, category=cat)
        return category.postpages_set.all()

template

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

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

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

Когда я пытаюсь получить http: // 127.0.0.1:8000/cat/category_name/?page=1 или даже http: // 127.0.0.1:8000/cat/category_name/ Я получил исключение 404.

Как правильно использовать нумерацию страниц в общих представлениях на основе классов?

1 Ответ

4 голосов
/ 31 июля 2011

эй, уже есть kwarg paginate_by для ListView, так что просто введите его. Попробуйте что-то вроде этого:

url(r'^cat/(?P<category>[\w+\s]*)/page(?P<page>[0-9]+)/$',
    CategorizedPostsView.as_view(paginate_by=3)),

и для вашего шаблона вы можете попробовать что-то вроде:

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

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

            {% if page_obj.has_next %}
                <a href="?page={{ page_obj.next_page_number }}">next</a>
            {% endif %}
        </span>
    </div>
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...