@sazhyk

Как настроить пагинацию в Django для данных с другого ресурса?

Суть такая. Есть API, к которому я обращаюсь из Django посредством либы requests. Для запроса данных есть форма. Данные от API прилетают в JSON'е. Для того, чтобы отображать данные на странице использую встроенную в Django пагинацию. Но корректно отображается только первая страница. Если перейти на вторую - она пустая. Но если снова нажать кнопку submit в форме, то данные отображаются, и отображаются верные с учетом пагинации.
Собственно вопрос, как работать с такими данными с пагинацией?

UPD:
utils.py
class GetRecords:
        ...
    def get_history(...):
        response = requests.post(url=self.history_url,
                                 cookies=self.cookies,
                                 data=payload,
                                 headers=self.headers)
        return response

views.py

def index(request):
    ...
    if request.method == 'POST':
        if form.is_valid:
            ...
            records = GetRecords().get_history(...).json()
            paginator = Paginator(records['data'], 20)
            page_number = request.GET.get('page')
            page_obj = paginator.get_page(page_number)
            context['page_obj'] = page_obj
    return render(request,
                  template_name='index.html',
                  context=context)


index.html

{% block content %}
    <ul>
    {% for data in page_obj %}
        <li>{{ data }}</li>
    {% endfor %}
    </ul>
    <div class="pagination">
        <span class="step-links">
            {% if page_obj.has_previous %}
                <a href="?page=1">&laquo; Первая</a>
                <a href="?page={{ page_obj.previous_page_number }}">Предыдущая</a>
            {% endif %}

            <span class="current">
                Страница {{ page_obj.number }} из {{ page_obj.paginator.num_pages }}
            </span>

            {% if page_obj.has_next %}
                <a href="?page={{ page_obj.next_page_number }}">Следующая</a>
                <a href="?page={{ page_obj.paginator.num_pages }}">Последняя &raquo;</a>
            {% endif %}
        </span>
    </div>
{% endblock %}

  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы