如何在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,但当我点击下一步它不显示下一页

<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1">&laquo; 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 &raquo;</a>
{% endif %}
</span>
</div>

流程是这样的用户会来输入开始日期和结束日期然后点击提交获取他的历史数据问题是如果用户选择更长的日期范围我想要分页

这就是数据如何以字典的形式传入列表

[{"日期":"2021/12/02","地址":"明尼阿波利斯111纽约","机":"TR"},{"日期":"2021/12/03","地址":"明尼阿波利斯111纽约","机":"先生"},{"日期":"2021/12/02","地址":"明尼阿波利斯111纽约","机":"公关"},{"日期":"2021/12/02","地址":"明尼阿波利斯111纽约","机":"CR"},{"日期":"2021/12/12","地址":"明尼阿波利斯111纽约","机":"农达"}]

这些数据来自于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

最新更新