장고에서는 테이블을 view에서 만들어서 보낼 수 있고
심지어 페이징 기능도 가능하다 !!
출처 : https://simpleisbetterthancomplex.com/tutorial/2016/08/03/how-to-paginate-with-django.html
The Paginator
# auth.User 테이블에 53개의 인스턴스가 있을 때
#예시를 보면 Paginator
는 한 화면에 보여지는 것을 10개로 제한하였기 때문에 총 6개의 페이지가 만들어지고 다섯 페이지에서는 10개의 user 리스트가 보여지고 마지막 페이지에서는 3명의 user 리스트만 보여지게 된다.
#직접 구현한 코드
views.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def index(request): samelines = SameLine.objects.all() page = request.GET.get('page',1) paginator = Paginator(samelines, 10) try: lines = paginator.page(page) except PageNotAnInteger: lines = paginator.page(1) except EmptyPage: lines = paginator.page(paginator.num_pages) context = { 'samelines':lines } return render(request,'samelines/index.html',context) | cs |
index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <body> <div class="container"> <table class="table table-striped"> <tbody> {% for sameline in samelines %} <tr> <td>{{ sameline.line }}</td> </tr> {% endfor %} <tbody> </table> {% if samelines.has_other_pages %} # 한 화면에 10개씩 보여주는 경우에 다음 페이지가 있을 경우 <ul class = "pagination"> {% if samelines.has_previous %} # ① 현재 페이지에서 이전페이지가 존재할 때, << 활성화, 없을 경우 비활성화 <li><a href="?page={{ samelines.previous_page_number }}">«</a></li> {% else %} <li class = "disabled"><span>«</span></li> {% endif %} {% for i in samelines.paginator.page_range %} # ③ 페이지를 전부 보여준다 {% if samelines.number == i %} # ② 현재 보고 있는 페이지일 경우에 다르게 표시해준다 <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li> {% else %} <li><a href="?page={{ i }}">{{ i }}</a></li> {% endif %} {% endfor %} {% if samelines.has_next %} # ④ 현재 페이지에서 다음페이지가 존재할 때, >> 활성화, 없을 경우 비활성화 <li><a href="?page={{ samelines.next_page_number }}">»</a></li> {% else %} <li class="disabled"><span>»</span></li> {%endif %} </ul> {%endif%} </body> |
'Django' 카테고리의 다른 글
python 파일 존재여부 (0) | 2018.01.29 |
---|---|
csrf 및 form 구현 (0) | 2018.01.25 |
[Django] TypeError : __init__() missing 1 required positional argument: 'on_delete' 에러 (0) | 2018.01.22 |
[Django] model, 마이그레이션, 템플릿 (0) | 2018.01.18 |
Django로 앱 만드는 초기과정 (0) | 2018.01.18 |