为什么我的 Django 分页会无限地返回相同的项目?
Why does my django pagination keeps returning the same items infinitely?
我正在使用 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.<b>page(1)</b>
except PageNotAnInteger:
queryset = queryset3.page(page)
except EmptyPage:
queryset = ""
这意味着您首先要获取第一页,只有当 1
不是整数时,您才会使用 page
querystring 参数获取页面。你应该交换这些,比如:
try:
queryset = queryset3.<b>page(page)</b>
except PageNotAnInteger:
queryset = queryset3.<b>page(1)</b>
except EmptyPage:
queryset = Store_detail.objects.<b>none()</b>
我正在使用 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.<b>page(1)</b>
except PageNotAnInteger:
queryset = queryset3.page(page)
except EmptyPage:
queryset = ""
这意味着您首先要获取第一页,只有当 1
不是整数时,您才会使用 page
querystring 参数获取页面。你应该交换这些,比如:
try:
queryset = queryset3.<b>page(page)</b>
except PageNotAnInteger:
queryset = queryset3.<b>page(1)</b>
except EmptyPage:
queryset = Store_detail.objects.<b>none()</b>