Django: Рендеринг ответа API в html, по одной странице за раз
У меня есть API, который возвращает постраничный ответ. Мое представление (показанное ниже) пытается получить ответ от этого API и отображает его в HTML search_result.html. Однако я получаю только первую страницу ответа API, а не другие страницы. Из-за проблем с производительностью я не хочу загружать все страницы вместе.
View.py
query_url = "/api/transcript/search/?identifier_field=" + search_identifier + \
"&expand=transcript_release_set,genes,translations"
response = requests.get(host_url + query_url)
if response.status_code == 200:
search_result = response.json()
return render(request, 'search_result.html', context={'form': search_form,
'search_result': search_result,
'search_identifier': search_identifier})
Ответ API был реализован через следующее представление:
View2.py
class TranscriptSearch(generics.ListAPIView):
queryset = Transcript.objects.all()
serializer_class = TranscriptSearchSerializer
filter_backends = (TranscriptSearchFilterBackend, )
pagination_class = PageNumberPagination
def get_queryset(self):
queryset = Transcript.objects.order_by('pk')
return queryset
def get(self, request, *args, **kwargs):
result = super(TranscriptSearch, self).get(request, *args, **kwargs)
return result
Я не хочу выводить в HTML все страницы ответов API за один раз, это замедлит загрузку HTML-страницы. Я хочу загружать каждую страницу ответа API только тогда, когда пользователь щелкнет номер страницы из HTML. Итак, как я могу отобразить в HTML каждую страницу API-ответа по очереди, не отображая все страницы сразу?
Примечание: в файле search_result.html имеется следующий код, но он может не понадобиться
{% if search_result.has_other_pages %}
<ul class="pagination">
{% if search_result.has_previous %}
<li><a href="?page={{ search_result.previous_page_number }}">«</a></li>
{% else %}
<li class="disabled"><span>«</span></li>
{% endif %}
{% for i in search_result.paginator.page_range %}
{% if search_result.number == i %}
<li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
{% else %}
<li><a href="?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if search_result.has_next %}
<li><a href="?page={{ search_result.next_page_number }}">»</a></li>
{% else %}
<li class="disabled"><span>»</span></li>
{% endif %}
</ul>
{% endif %}