Как я могу постранично вывести список словарей в django
Я работаю над пагинацией в Django и пытаюсь пагинировать мои данные, которые находятся в виде словарей внутри списка, я пробовал подход, основанный на функциях, согласно документации
class MyUserData(TemplateView):
template_name = "myuserdata.html"
form = "userform"
def listing(request):
contact_list = Contact.objects.all()
paginator = Paginator(contact_list, 25) # Show 25 contacts per page.
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(request, 'list.html', {'page_obj': page_obj})
Я пишу вышеуказанную функцию внутри моего класса, который наследуется (TemplateView), теперь проблема в том, что она уменьшает количество результатов до 25, но когда я нажимаю на next, она не показывает следующую страницу
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
Поток выглядит следующим образом пользователь приходит и вводит начальную дату и конечную дату и нажимает на submit и получает свою историю данных и проблема в том, что пользователь получает всю свою историю, если он выбирает более длинный диапазон дат, который я хочу постранично отобразить
вот как поступают данные в виде словарей внутри списка
[{'date':'2021/12/02','address':'minneapolis 111 NY','machine':'TR'},{'date':'2021/12/03','address':'minneapolis 111 NY','machine':'MR'},{'date':'2021/12/02','address': 'minneapolis 111 NY','machine':'PR'},{'date':'2021/12/02','address':'minneapolis 111 NY','machine':'CR'},{'date':'2021/12/12','address':'minneapolis 111 NY','machine':'RR'}]
Эти данные поступают из api, а не из моделей django.
Я пробовал подход на основе функций внутри класса, который наследует шаблонный вид возможно ли, что я могу попробовать это внутри класса, согласно документации, если я пишу класс, я должен использовать ListView, возможно ли это в Templateview? Я должен использовать только ListView?
Предположим, что у вас есть список словарей в переменной data
:
from django.core.paginator import Paginator
paginator = Paginator(data, 3)
# 3 here is limit number, you can give dynamic value changing it to your required limit number
objects = paginator.page(1)
# 1 here is page number, you can give dynamic value changing it to your required page number
print(list(objects))
# This should print first 3 data as a list