例如,如果我的Django表有数百行,并且最初在视图中,我会以下列格式获取前10条记录以显示在网页上。
def fetchtExperts(request):
if request.method == "GET":
experts = Experts.objects.exclude(client_assigned=None).values('id', 'name', 'age').order_by('qualification')[:10]
return render(request, 'index.html', {'experts': experts})
如果在第1页上显示这10条记录,我希望当用户点击第2页时显示接下来的10条记录。如何从最后一条提取的记录之后的记录开始获取接下来的10条记录?我是否将第1页的最后一个记录的ID发送到视图,以便我可以相应地获取接下来的10条记录,或者是否有更好的方法来实现这一目标?
答案 0 :(得分:1)
Django为这类问题提供了enableHiveSupport工具。改变你的观点:
from django.core.paginator import Paginator
def fetchtExperts(request):
experts = Experts.objects.exclude(client_assigned=None).values('id', 'name', 'age').order_by('qualification')
paginator = Paginator(experts, 10) # Show 10 contacts per page
page = request.GET.get('page')
experts = paginator.get_page(page)
return render(request, 'list.html', {'experts': experts})
使用此方法,您需要将页码作为GET参数传递:http://mypage.com/view?page=1