【发布时间】:2015-07-22 20:47:41
【问题描述】:
我有一个包含对象列表和两个按钮的页面:show more 和 show all。对象由 AJAX 加载,向ItemsListView 发送页码:
class ItemsListView(ListView):
paginate_by = 2
页面初始化时,JS变量current_page设置为1,JS向ItemsListView视图发送AJAX请求,获取第一页的2个对象并渲染。
当用户点击显示更多按钮时,current_page值递增,JS请求下一页的对象。
现在我想实现 show all 按钮。例如,
如果我们有以下对象列表:[1, 2, 3, 4, 5, 6, 7, 8, 9],页面加载对象1 和2 将被渲染。在用户点击show more后,它会渲染对象3和4。用户点击show all后,会渲染对象5、6、7、8和9。
在我看来我是动态变化的paginate_orphans:
class ItemsListView(ListView):
paginate_by = 2
paginate_orphans = 0
def get_paginate_orphans(self):
show_all = json.loads(self.request.GET.get('show_all', 'false'))
page_kwarg = self.page_kwarg
page = self.kwargs.get(page_kwarg) or self.request.GET.get(page_kwarg) or 1
if show_all:
return self.get_queryset().count() - (int(page) - 1) * 2
return self.paginate_orphans
它确实有效,但我想知道是否有更优雅的方法来解决这个问题。
【问题讨论】:
标签: ajax django pagination django-pagination