为什么我的 django 分页不断无限返回相同的项目?



我正在使用django和ajax在我的网站上创建无限滚动。我希望当用户滚动到页面底部时,它从数据库(下一页)加载更多项目。一切都运行良好,除了它不断无限返回第一页的项目。例如,如果用户向下滚动到页面末尾而不是添加页面 2 的元素,它只是将相同的元素从第一页再次添加到底部。我非常确定这个问题来自我的 views.py。我似乎无法弄清楚出了什么问题。

def feed(request):
queryset2 = Store_detail.objects.filter(store_lat__gte=lat1, store_lat__lte=lat2)
.filter(store_lng__gte=lng1, store_lng__lte=lng2)
queryset3 = Paginator(queryset2, 4)
page = request.GET.get('page',1)
try:
queryset = queryset3.page(1)
except PageNotAnInteger:
queryset = queryset3.page(page)
except EmptyPage:
queryset = ""
context = {
"location":location,
"queryset":queryset,
}
# return HttpResponse(template.render(context,request))
return render(request, 'main/feed.html', {'queryset': queryset, 
'location':location,})

所以基本上我想在用户滚动到屏幕末尾时加载下一页,如果下一页中没有更多项目或下一页不存在,则停止添加项目。

分页逻辑有点不对劲。您分页方式为:

try:
# you first try to retrieve page 1
queryset = queryset3.page(1)
except PageNotAnInteger:
queryset = queryset3.page(page)
except EmptyPage:
queryset = ""

因此,这意味着您首先的目标是获取第一页,并且只有当1不是整数时,您才会获取带有page查询字符串参数的页面。您应该交换这些,例如:

try:
queryset = queryset3.page(page)
except PageNotAnInteger:
queryset = queryset3.page(1)
except EmptyPage:
queryset = Store_detail.objects.none()

最新更新