资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Django学习之分页器的使用-创新互联

# 创建项目 page_project

10年积累的做网站、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有千阳免费网站建设让你可以放心的选择与我们合作。

配置settings 

启动  

# 导入分页器相关模块

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

查看urls 

from app01 import views urlpatterns = [     url(r'^admin/', admin.site.urls),     url(r'^index/', views.index), ]

查看views ,测试一条数据  ,准备数据100条

def index(request):     # 插入一条数据     # book_1 = Book(title='python', price="60")     # book_1.save()     Booklist = []     for i in range(100):         Booklist.append(Book(title="book" + str(i), price=30 + i * 2))     Book.objects.bulk_create(Booklist)          """     :param request:     :return:     """     return HttpResponse("index")

查看  一条数据 sqllite 

Django 学习之 分页器的使用

查看插入的100条数据 

Django 学习之 分页器的使用

Django 学习之 分页器的使用

功能1、展示数据里面的所有数据

def index(request):     # 分页器     book_list = Book.objects.all()     print(book_list, type(book_list))     return render(request, "index.html", locals())

html 页面

Django 学习之 分页器的使用

前端页面显示如下

Django 学习之 分页器的使用

功能2、分页器常用的功能

views 

book_list = Book.objects.all() paginator = Paginator(book_list, 3)  # 每页显示三条数据 print(paginator, type(paginator)) print("count:", paginator.count)  # 数据总数 print("num_pages", paginator.num_pages)  # 总页数 print("page_range", paginator.page_range)  # 页码的列表

访问页面刷新获取数据

Django 学习之 分页器的使用

# 显示首页数据

views 

first_page = (request.GET.get())
first_page_data = paginator.page(first_page)

index .html

显示首页 {% %}
    {{ .}} ---{{ .}}
        {% %}

前端访问显示

Django 学习之 分页器的使用

功能三、根据请求页面数显示不同页面的数据,不存在的页面数据就显示首页

try:     current_page_number = int(request.GET.get("page", 1))     if current_page_number < 34:         current_page = paginator.page(current_page_number)     elif current_page_number < 0:         current_page = paginator.page(current_page_number)     else:         current_page = paginator.page(1) except EmptyPage as e:     current_page = paginator.page(1)

index.html  

当前页面为  {% %}
    {{ .}} ---{{ .}}
        {% %}

访问展示

超出34 页面默认显示首页

Django 学习之 分页器的使用

功能四、引入bootstrap 和 分页 格式 丰富样式

views 

def index(request):     # 分页器     book_list = Book.objects.all()     paginator = Paginator(book_list, 10)  # 每页显示三条数据     print(paginator, type(paginator))     page_range = paginator.page_range     print("count:", paginator.count)  # 数据总数     print("num_pages", paginator.num_pages)  # 总页数     print("page_range", paginator.page_range)  # 页码的列表     # 根据请求页面数显示不同页面的数据,不存在的页面数据就显示首页     try:         current_page_num= int(request.GET.get("page", 1))         current_page = paginator.page(current_page_num)         print(current_page, type(current_page))         print("object_list", current_page.object_list)     except EmptyPage as e:         current_page = paginator.page(1)     return render(request, "index.html", locals())

index  页面

          index          

 当前页面为 

    {% for book in current_page %}     
  • {{ book.title }}:{{ book.price }}
  •  {% endfor %}

 显示页码  

       
  •                 上一页            
  •      

     循环遍历 页码数 

     {% for item in paginator.page_range %}     

     当显示当前页面的时候加蓝 

                 {% if current_page_num == item %}             {{ item }}    {% else %}         
  •  {{ item }}  
  •  {% endif %}              {% endfor %}            
  •                 下一页              
  •   

    页面效果

    Django 学习之 分页器的使用

    显示上一页,下一页 

    # 根据循环当前的页面 进行判断   current_page

    上一页使用   current_page|add:-1   或者  current_page.previous_page_number 

    下一页 使用 current_page|add:+1 或者  current_page.next_page_number

  •     {% if  current_page.has_previous %}                      {#      #}                上一页              {% else %}         上一页
  •     {% endif %}
  •     {% if current_page.has_next %}                      {#      #}              下一页                {% else %}         下一页     {% endif %}     
  • 查看页面 

    Django 学习之 分页器的使用

    显示默认的五页

    views  代码

    if paginator.num_pages > 11:     if current_page_num - 5 < 1:         page_range = range(1, 12)     elif current_page_num + 5 > paginator.num_pages:         page_range = range(paginator.num_pages - 10, paginator.num_pages + 1)     else:         page_range = range(current_page_num - 5, current_page_num + 6) else:     page_range = paginator.page_range

    html 

              index     

     当前页面为 

       {% for book in current_page %}         
    • {{ book.title }}:{{ book.price }}
    •  {% endfor %}

     显示页码 

                 
  •  {% if  current_page.has_previous %}                   {#      #}   上一页                   {% else %}                 上一页
  •  {% endif %}           {% for item in page_range %}             {% if current_page_num == item %}                 {{ item }}  {% else %}                 
  • {{ item }}
  •  {% endif %}         {% endfor %}         
  •  {% if current_page.has_next %}                   {#      #}   下一页                     {% else %}                 下一页  {% endif %}             
  •     

    页面显示 

    Django 学习之 分页器的使用

    Django 学习之 分页器的使用

    另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


    新闻名称:Django学习之分页器的使用-创新互联
    文章URL:http://cdkjz.cn/article/edoph.html
    多年建站经验

    多一份参考,总有益处

    联系快上网,免费获得专属《策划方案》及报价

    咨询相关问题或预约面谈,可以通过以下方式与我们联系

    大客户专线   成都:13518219792   座机:028-86922220