paginate_orphans()
函数是Django分页模块中的一个函数,它基于分页器对象对页码进行翻译。paginate_orphans()
函数可用于两种情况下:
- 分页器可以返回每一页上的最大项目数(即“每页显示何物数”)。
- 分页器可以返回最后一页上的项目数和或phans值,或者在最后一页上显示的项目数和orphans值中,分页器中的结果协调不当。
使用方法的完整攻略如下:
1.导入分页器的类。
from django.core.paginator import Paginator
2.创建一个分页对象,并将要分页的内容传递给它。此处假设我们有一个查询集queryset
,并且每一页应显示6个项目。
paginator = Paginator(queryset, 6)
3.对于具有不可协调的orphans值的内容,可以使用paginate_orphans()
来确保最后一页上至少有匹配数量的项目。例如,如果我们想在最后一页上显示4个项目而不是默认的2个项目,则可以使用以下代码:
paginator = Paginator(queryset, 6, orphans=4)
# 使用下面的代码获取页面的数据
try:
page = paginator.page(page_num)
except EmptyPage:
page = paginator.page(paginator.num_pages)
以上就是使用paginate_orphans()
函数的攻略,下面提供两个实例说明:
实例1:我们有一个列表,并使用以下方式进行分页
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def list_view(request):
object_list = MyModel.objects.all()
paginator = Paginator(object_list, 10, orphans=2)
page = request.GET.get('page')
try:
my_objects = paginator.page(page)
except PageNotAnInteger:
my_objects = paginator.page(1)
except EmptyPage:
my_objects = paginator.page(paginator.num_pages)
return render(request, 'list.html', {'my_objects': my_objects})
这里我们的分页器可以显示每页10个物品,我们希望在最后一页上至少显示2个项目。如果不使用paginate_orphans()
,则最后一页仅显示2个项目。使用paginate_orphans()
,最后一页会显示10个项目。
实例2:我们想为项目列表的最后一页指定大于默认值的不协调值。
def my_view(request):
my_objects = MyModel.objects.all()
# 假设创建 paginator 对象
paginator = Paginator(my_objects, 10, orphans=4)
# 以下代码获取页面的数据
page_obj = paginator.get_page(page_num)
在此示例中,我们创建一个分页器对象并设置或phans值,该值大于默认值2。如果有“孤儿”(即剩余不匹配的最后一页),则该值指定要在其上显示的项目的最小数。