Django自带分页的一种优化方法

django提供了一种可以用来进行分页的方法:

from django.core.paginator import Paginator as pa
test_objet = ['aa','bb','cc','dd','ee','ff','gg','hh','ii','jj','kk','ll']
test_1 = pa(test_objet,3)
for i in test_1.page(1):
    print(i)

#print: aa,bb,cc

当数据量较大时候,看起来和想象中的不太一样:

Django自带分页的一种优化方法

看起来是有点太多了,对其进行优化:

class Pagination_p2(object):

    def __init__(self,request,queryset,page_size=5,page_param='page',plus=3) -> None:
        self.request = request
        self.query = queryset
        self.plus = plus
        self.page_param = page_param
        self.pagination = pa(queryset,page_size)

定义一个新的分页辅助类Pagination_p2。

request是前端返回的请求,queryset是从数据库中拿到的数据,plus是显示的页面数(就是当前页面+- plus),page_size为每一页中的数据数目。

之后定义函数,获取页面:

        page = self.request.GET.get(self.page_param)
        try:
            now_pagination = self.pagination.page(page)
        except PageNotAnInteger:
            now_pagination = self.pagination.page(1)
        except EmptyPage:
            now_pagination = self.pagination.page(1)

如果page不合法,则返回到第一页

        if self.pagination.count = self.pagination.num_pages - self.plus:
                now_pagination_list = range(self.pagination.num_pages - self.plus * 2,self.pagination.num_pages + 1)
            else:
                now_pagination_list = range(now_pagination.number - self.plus,now_pagination.number + self.plus + 1)

当页面数不满足 page +- plus的分页需求时,则一直显示全部页面内容;

当页面数量少于 plus时 或 大于 最大值 – plus时,锁定显示页面数量;

通常情况显示为 (当前页面数 – plus,当前页面 + plus)

 return (now_pagination,now_pagination_list)

返回量

    page_object = Pagination_p2(request=request,queryset=queryset).html()
    context =  {
        'now_pa' : page_object[0],
        'pa_pn' : page_object[1]
    }

视图view 中接受返回量。

Django自带分页的一种优化方法

templates中进行相关定义。

Django自带分页的一种优化方法

Django自带分页的一种优化方法

这样看起来就舒服得多了。

Original: https://blog.csdn.net/qq_45316770/article/details/123925485
Author: Expcman
Title: Django自带分页的一种优化方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733450/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球