Django는 페이지 나누기 작업을 수행합니다.

4945 단어 Django
우선view 함수에 필요한 페이지 함수를 도입합니다
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
 
  
def index(request):
    1.      
    persons=Person.objects.all()
    2.           
    #  1         
    #   2         
    #  3              3          
    pagenator=Paginator(persons,10,3)
    3.         
    #               
    page_num=request.GET.get('page','1')

    try:
    4,                 
        page=pagenator.page(page_num)
    except PageNotAnInteger as e:
        #           ,         
        page=pagenator.page(1)
    except EmptyPage as e:
        #               ,       
        #      
        #1.  
        if int(page_num)>pagenator.num_pages:
            page=pagenator.page(pagenator.num_pages)
        else:
            #2.          
            page=pagenator.page(1)
    num=int(page_num)
    #  num 1   1—10
    #  num 2   2-11
    #  num 3   3-12
    #  num 4   4-13
    #  num 5   5-14
    #  num 6   6-15
    #  num 7   7-16
    #  num 8  8-17
    #  num 9   9-18
    #  num 10  10-19
    #   num 11  11-20
    #   num 12   11-20
    #  num 15   11-20

    #  num<11    num-num+9
    #  num>=11    
    #1.
    link_range=[]
    if num<11 or num+9<=pagenator.num_pages:
        link_range=range(num,num+10)
    else:
        link_range=range(pagenator.num_pages-9,pagenator.num_pages+1)

    return render(request,'index.html',{'page':page,'pagenator':pagenator,'link_range':link_range})

좋은 웹페이지 즐겨찾기