分页器功能在 Django 中不起作用?
paginator function not working in django?
我的问题是我想每页只检索 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})
我的问题是我想每页只检索 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})