Development/Django(멋쟁이사자처럼 7기 운영진)

[멋사7기] 5주차 - 3, 4. Pagination 이론, 실습

안다희 2019. 2. 10. 00:08
728x90

home.html에 있는 블로그 글들은 페이지네이션 하고싶다!


지금 보여주는 방법은 하나의 예시일 뿐!







**)

page = request.GET.get('page')

=> request.GET은 딕셔너리 자료형이다.


url : www.google.com/?key1=1&key2=2

request.GET  = {"key1": 1, "key2": 2}


1) views.html (home.html 있는 앱에 있는)

from django.core.paginator import Paginator

def home(request):
blogs = Blog.objects

# 블로그 모든 글을 대상으로
blog_list = Blog.objects.all()
# 블로그 객체 세 개를 한 페이지로 자르기
paginator = Paginator(blog_list, 3)
# request된 페이지가 뭔지 알아내고 (request 페이지를 변수에 담아내고)
page = request.GET.get('page')
# request된 페이지를 얻어온 뒤 return 해준다
posts = paginator.get_page(page)

return render(request, 'home.html', {'blogs': blogs, 'posts': posts})



2) home.html (모든 글 보여지는 html)


- 정해진 수만큼 페이지 보여주기

{% for blog in posts %} <!-- blogs.all 대신 posts. 순회대상을 변경해준 것! -->
<div class="card">
<div class="card-body">
<h5 class="card-title"> {{blog.title}} </h5>
<h6 class="card-subtitle mb-2 text-muted"> {{blog.pub_date}} </h6>
<p class="card-text"> {{blog.summary}} </p>
<a href="{%url 'detail' blog.id %}" class="card-link">...more</a>
</div>
</div>
<br>
{% endfor %}


- 페이지네이션

<!-- First Previous 3 of 4 Next Last -->
{% if posts.has_previous %}
<a href="?page=1">First</a>
<a href="?page={{posts.previous_page_number}}">Previous</a>
{% endif %}

<span>{{posts.number}}</span>
<span>of</span>
<span>{{posts.paginator.num_pages}}</span>

{% if posts.has_next %}
<a href="?page={{posts.next_page_number}}">Next</a>
<a href="?page={{posts.paginator.num_pages}}">Last</a>
{% endif %}





??)

.page

.get_page

다른게 무엇인가

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]