问题描述
我的问题是我想每页只检索 6 个对象,但每页显示 10 个对象
我的看法
def home(request):
if request.method == 'GET':
entry = Entry.objects.all().order_by('date_added')
# top_rated = Entry.objects.annotate(
# no_of_likes=Count('likes')).order_by('-no_of_likes')[:2]
pages = Paginator(entry,6)
if request.GET.get('page'):
print('executed')
page_num = request.GET.get('page')
pages = pages.page(page_num)
entries = pages.object_list
print(len(entries))
return render(request,'base/base.html',{'entries': entries,'pages': pages})
解决方法
您以冗余/不完整(未处理)检查和将不同对象分配给同一变量的方式编写了代码,从而导致了您看到的问题。基本上发生的事情是您的条件 if request.GET.get('page'):
评估为 False
可能是因为 page
不存在于查询字符串中。这意味着 entries = pages.object_list
为您提供了完整的查询集。
改为尝试以下操作:
def home(request):
entry = Entry.objects.all().order_by('date_added')
pages = Paginator(entry,6)
page_number = request.GET.get('page')
page = paginator.get_page(page_number)
entries = page.object_list
return render(request,'base/base.html',{'entries': entries,'page': page})