django 페이지 나누기 기능의 구체적인 실현

10525 단어
django는 페이지 데이터 관리를 돕기 위해 paginator 클래스를 제공했다django/core/paginator.py.그것은 목록, 모듈, 또는 다른 교체 가능한 대상을 수신할 수 있다.
기본 구문의 예:
 1 #!/usr/bin/env python
 2 # _*_ coding:utf-8 _*_
 3  
 4 import os
 5  
 6 from django.core.paginator import Paginator
 7 objects = ['john','paul','george','ringo','lucy','meiry','checy','wind','flow','rain'] #         
 8 p = Paginator(objects,3)  # objects 3       ,
 9 print p.count  # 10     
10 print p.num_pages  # 4      
11 print p.page_range  # xrange(1, 5)          【  】
12  
13 page1 = p.page(1)  #
14 print page1.object_list  #  1         ['john', 'paul', 'george']
15 print page1.number  #  1          1
21 print page1.has_previous() # 1 False 22 print page1.has_other_pages() # 1 True 24 print page2.has_previous() # 1 True 25 print page1.has_next() # 1 True 26 print page1.next_page_number() # 1 3 27 print page1.previous_page_number() # 1 1 28 print page1.start_index() # 1 4 29 print page1.end_index() # 1 6

공식 애플리케이션의 예:
백그라운드views.py 코드:
 1 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 2 from django.shortcuts import render
 3  
 4 def listing(request):
 5     contact_list = Contacts.objects.all()
 6     paginator = Paginator(contact_list, 25) # Show 25 contacts per page
 7  
 8     page = request.GET.get('page')
 9     try:
10         contacts = paginator.page(page)
11     except PageNotAnInteger:
12         # If page is not an integer, deliver first page.
13         contacts = paginator.page(1)
14     except EmptyPage:
15         # If page is out of range (e.g. 9999), deliver last page of results.
16         contacts = paginator.page(paginator.num_pages)
17  
18     return render(request, 'list.html', {'contacts': contacts})

프론트 데스크톱 템플릿 코드
 1 {% for contact in contacts %}
 2     {# Each "contact" is a Contact model object. #}
 3     {{ contact.full_name|upper }}
4 ... 5 {% endfor %} 6 7
class="pagination"> 8 class="step-links"> 9 {% if contacts.has_previous %} 10 "?page={{ contacts.previous_page_number }}">previous 11 {% endif %} 12 13 class="current"> 14 Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}. 15 16 17 {% if contacts.has_next %} 18 "?page={{ contacts.next_page_number }}">next 19 {% endif %} 20 21

 
전재 대상:https://www.cnblogs.com/ailex/p/10062257.html

좋은 웹페이지 즐겨찾기