Django ListView视图中如何设置分页合计项

**

Django ListView视图类中如何设置分页合计项

Django listview视图类非常好用,只需一些简单的设置,就可以将数据集显示到前端页面了,为程序员节省大量劳动力。
最近个人的一个项目某页面用了listview,并且分页显示了,需要在每一页下显示表列对应数据统计值。网上查来查去没看到有人介绍这方面知识,自己慢慢摸索和反复实验,总算是找到了方法,现简要记录和分享于此。
事实上,目标的实现方法很简单,就是用到listview下的 paginate_queryset 方法。具体示例如下:

class AAAListView(ListView):
    def get_context_data(self, *, object_list=None, **kwargs):
        context = super(AAAListView,self).get_context_data(**kwargs)          
        current_page = self.paginate_queryset(self.object_list,self.paginate_by)
        page_data_list = current_page[2]
        money_total = 0       
        for obj in page_data_list:
           money_total = money_total + obj.money

注意:大体思路就是先取出当前页的queryset,self.paginate_queryset()取出的是页面元组对象,其中包含了数据queryset,为第3个成员,所以要用current_page[2]这样的脚标方式取出来才能供遍历时使用。然后for循环遍历算出特定列的合计值。再将合计值变量加入context返回前端,就可以在前端进行调用了。

以上目标的实现或许还有更好的方法,欢迎大家评论时分享更好的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django ListView 是一个通用视图类,用于显示包含多个对象的列表视图。要实现分页功能,可以结合 Django 的内置分页类Paginator和ListView来完成。 首先,导入相关的模块: ```python from django.core.paginator import Paginator from django.views.generic import ListView ``` 然后,定义你的 ListView 类,并设置需要显示的模型和模板: ```python class YourListView(ListView): model = YourModel template_name = 'your_template.html' paginate_by = 10 # 每页显示的对象数量 queryset = YourModel.objects.all() # 可以自定义查询集 ``` 在上述代码,`YourListView` 继承自 `ListView`,并设置了 `model` 属性为你要显示的模型,`template_name` 属性为你的模板路径。`paginate_by` 属性用于设置每页显示的对象数量,这里设置为10。 接下来,在你的模板文件 `your_template.html` ,可以通过以下方式渲染分页导航和对象列表: ```html {% for object in object_list %} <!-- 显示你的对象属性 --> {% endfor %} <!-- 显示分页导航 --> <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 }}</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> ``` 在模板,你可以使用 `object_list` 来访问当前页的对象列表,`page_obj` 包含与分页相关的信息,例如当前页码、是否有上一页/下一页等。 这样,你就可以在 Django 使用 ListView 和 Paginator 来实现分页功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值