Django 2 - нумерация страниц не работает - PullRequest
0 голосов
/ 26 мая 2018

прежде всего, спасибо за чтение моего вопроса :) В настоящее время я работаю над небольшой платформой блога и хочу реализовать нумерацию страниц для всех моих элементов Post.для этого я изменил мой view.py и фактический .html шаблон.Теперь проблема в том, что каждый раз, когда я захожу на страницу post_list.html и нажимаю на следующее, ничего не происходит .. Что тут такого:

post_list.html

{% extends 'quickblog/base.html' %}

{% block content %}
    {% for post in posts %}
        <br>
        <div class="post">
            <h1><u><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></u></h1>
            <p>{{ post.text|linebreaksbr }}</p>
            <div class="date">
                <a>published by: {{ post.author }}</a><br>
                <a>published at: {{ post.published_date }}</a><br>
                <a>tags: {{ post.tag }}</a>
            </div>
        </div>
    {% endfor %}
        <div class="pagination">
        <span class="step-left">
         {% if posts.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ posts.previous_page_number }}">previous</a>
            {% endif %}

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

        {% if posts.has_next %}
            <a href="?page={{ posts.next_page_number }}">Next</a>
            <a href="?page={{ posts.paginator.num_pages }}">Last &raquo;</a>
        {% endif %}
    </span>
   </div>
{% endblock %}

views.py

def post_list(request):
    list_posts = Post.objects.get_queryset().order_by('created_date')
    paginator = Paginator(list_posts, 15)  # Show 15 Posts per page

    page = request.GET.get('posts')
    posts = paginator.get_page(page)
    return render(request, 'quickblog/post_list.html', {'posts': posts})

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Поскольку нумерация страниц работает с упорядоченными данными, вам необходимо либо добавить order_by после запроса, либо использовать порядок по умолчанию в своих моделях, как указано в приведенной ниже ссылке

Ссылка на другой стек Powerflow Выпуск

Надеюсь, это поможет.

0 голосов
/ 26 мая 2018

В вашем шаблоне вы используете page в качестве параметра запроса.Так что вы должны использовать это и в представлении.

шаблон:

<a href="?page={{ posts.next_page_number }}">Next</a>

представление:

page = request.GET.get('page')  # not .get('posts')
...