在 Paginator Django 中设置默认起始页
Set default start page in Paginator Django
我有一个项目列表。当我输入其中一个的详细信息时,我想使用下一页检查其他人。
我遇到的问题是无论我点击哪个都不重要我总是从第一页开始(第一个项目)
Paginator的文档class我在django docs中找到的文档很少,我想找到指示显示哪个页面的方法,例如。如果我单击 id=3 的对象,我应该看到 .
def project_detail(request, id):
projects = Project.objects.all()
paginator = Paginator(projects, 1)
page = request.GET.get('page')
project = paginator.get_page(page)
return render(request,
'portfolio/projects/detail.html',
'project': project})
我想在里面实现这部分代码:
paginator.page(id)
如果可能的话,但真的不知道怎么做。
您可以检查page
是否是request.GET
的元素,如果不是,我们return .get_page(id)
改为:
def project_detail(request, id):
projects = Project.objects.all()
paginator = Paginator(projects, 1)
if 'page' in request.GET:
project = paginator.get_page(request.GET['page'])
else:
project = <b>paginator.get_page(id)</b>
return render(
request,
'portfolio/projects/detail.html',
'project': project}
)
话虽这么说,但我并不完全清楚你为什么要这样做。不能保证具有 pk=5 的对象是 fifth 元素。如果删除元素,主键之间可能会有“间隙”。
如果要获取该元素所在的页面,则应确定页面。你可以这样做:
def project_detail(request, id):
projects = Project.objects.order_by('pk')
paginator = Paginator(projects, 1)
if 'page' in request.GET:
project = paginator.get_page(request.GET['page'])
else:
<b>page</b> = Project.objects.filter(pk__lte=id).count()
project = paginator.get_page(<b>page</b>)
return render(
request,
'portfolio/projects/detail.html',
'project': project}
)
我有一个项目列表。当我输入其中一个的详细信息时,我想使用下一页检查其他人。
我遇到的问题是无论我点击哪个都不重要我总是从第一页开始(第一个项目)
Paginator的文档class我在django docs中找到的文档很少,我想找到指示显示哪个页面的方法,例如。如果我单击 id=3 的对象,我应该看到
def project_detail(request, id):
projects = Project.objects.all()
paginator = Paginator(projects, 1)
page = request.GET.get('page')
project = paginator.get_page(page)
return render(request,
'portfolio/projects/detail.html',
'project': project})
我想在里面实现这部分代码:
paginator.page(id)
如果可能的话,但真的不知道怎么做。
您可以检查page
是否是request.GET
的元素,如果不是,我们return .get_page(id)
改为:
def project_detail(request, id):
projects = Project.objects.all()
paginator = Paginator(projects, 1)
if 'page' in request.GET:
project = paginator.get_page(request.GET['page'])
else:
project = <b>paginator.get_page(id)</b>
return render(
request,
'portfolio/projects/detail.html',
'project': project}
)
话虽这么说,但我并不完全清楚你为什么要这样做。不能保证具有 pk=5 的对象是 fifth 元素。如果删除元素,主键之间可能会有“间隙”。
如果要获取该元素所在的页面,则应确定页面。你可以这样做:
def project_detail(request, id):
projects = Project.objects.order_by('pk')
paginator = Paginator(projects, 1)
if 'page' in request.GET:
project = paginator.get_page(request.GET['page'])
else:
<b>page</b> = Project.objects.filter(pk__lte=id).count()
project = paginator.get_page(<b>page</b>)
return render(
request,
'portfolio/projects/detail.html',
'project': project}
)