django高效率分页:

最近做一个分页的功能,网上很多资料都说用Paginator类来实现。可是看了一些例子,觉得这种分页方式在数据量非常大的情况下,效率会变得非常低下:

这里我们需要多少数据,从数据库中查询多少数据,在数据量很大的下,大大的提升了效率。

废话不多说,直接上代码:

python views.py

 ONE_PAGE_OF_DATA = 3
        try:
            curPage = int(request.GET.get('curPage', '1'))
            allPage = int(request.GET.get('allPage', '1'))
            pageType = str(request.GET.get('pageType'))
        except ValueError:
            curPage = 1
            allPage = 1
            pageType = ''
            # 判断点击【上一页】还是【下一页】
        if pageType == 'pageDown':
            curPage += 1
        elif pageType == 'pageUp':
            curPage -= 1

        startPos = (curPage - 1) * ONE_PAGE_OF_DATA
        endPos = startPos + ONE_PAGE_OF_DATA
        user_list = User.objects.all()[startPos:endPos]
        print user_list

        if curPage == 1 and allPage == 1:
            allPostCounts = User.objects.count()
            print allPostCounts
            allPage = allPostCounts / ONE_PAGE_OF_DATA
            print allPage
            remainPost = allPostCounts % ONE_PAGE_OF_DATA
            print remainPost
            if remainPost > 0:
                allPage += 1
        return render(request,'userinfo.html', {'user_list':user_list, 'allPage': allPage, 'curPage': curPage})

  userinfo.html代码:

<tbody>
          {% for line in user_list %}
            <tr>

                <td>{{ line.id }}td>
                <td>{{ line.username }}td>
                <td>{{ line.identity}}td>
                <td>{{ line.email }}td>
                <td>{{ line.tel}}td>
                <td>{{ line.create_time|date:"Y-m-d H:i:s" }}td>
              
            tr>
          {% endfor %}
        tbody>
  {% ifnotequal curPage 1 %}
            <a href="?curPage={{ curPage }}&&allPage={{ allPage }}&&pageType=pageUp">
                上一页
            a>
        {% endifnotequal %}

        第{{ curPage }}/{{ allPage }}页

         
        {% ifnotequal curPage allPage %}
            <a href="?curPage={{ curPage }}&&allPage={{ allPage }}&&pageType=pageDown">
                下一页
            a>
        {% endifnotequal %}

 

 
  

转载于:https://www.cnblogs.com/hlms/p/7899194.html

你可能感兴趣的:(django高效率分页:)