Django- 페이지 나누기

Django- 페이지 나누기
django 내장된 페이지
Paginator 객체
페이지 객체
예제
from django.core.paginator import Paginator
def students(request, num):
    allStudents = Student.objects.all()
    #     6   
    paginator = Paginator(allStudents, 6)
    print(paginator.count, paginator.num_pages, paginator.page_range)
    pageStus = paginator.page(num)
    return render(request, "students.html", {"stus":pageStus})



    
        


    {% for stu in stus %}
  • {{ stu.name }}--{{ stu.grade }}--{{ stu.age }}
  • {% endfor %}
{% if stus.has_previous %} 이전 페이지 {% endif %} {% for index in stus.paginator.page_range %} {% if index == stus.number %} {{ index }} {% else %} {{ index }} {% endif %} {% endfor %} {% if stus.has_next %} 다음 페이지 {% endif %}

페이지 나누기
소재지
(1) 설치
pip install django-pure-pagination

(2)settings에 추가
INSTALLED_APPS = (
    ...
    'pure_pagination',
)

(3)views에서 사용하는 방법
class OrgView(View):
    '''    '''

    def get(self, request):
        #       
        all_orgs = CourseOrg.objects.all()
        #       
        org_nums = all_orgs.count()
        #     
        all_citys = CityDict.objects.all()
        #          
        #       get       page  
        #                   
        try:
            page = request.GET.get('page', 1)
        except PageNotAnInteger:
            page = 1
        #     allorg      ,    5 
        p = Paginator(all_orgs, 5, request=request)
        orgs = p.page(page)

        return render(request, "org-list.html", {
            "all_orgs": orgs,
            "all_citys": all_citys,
            "org_nums": org_nums,
        })

(4) 템플릿 수정
#{%for course_org in all_orgs%}
{%for course_org in all_orgs.object_list%}
...
{%endfor%}

(5) 페이지 나누기 기능
    {% if all_orgs.has_previous %}
  • 이전 페이지
  • {% endif %} {% for page in all_orgs.pages %} {% if page %} {% ifequal page all_orgs.number %}
  • {{ page }}
  • {% else %}
  • {{ page }}
  • {% endifequal %} {% else %}
  • ...
  • {% endif %} {% endfor %} {% if all_orgs.has_next %}
  • 다음 페이지
  • {% endif %}

좋은 웹페이지 즐겨찾기