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
다른게 무엇인가
'Development > Django(멋쟁이사자처럼 7기 운영진)' 카테고리의 다른 글
[멋사7기] 6주차 - 1, 2. form 이론, 실습 (0) | 2019.02.17 |
---|---|
[멋사7기] 5.5주차 - Faker (0) | 2019.02.10 |
[멋사7기] 5주차 - 1, 2. 로그인, 회원가입 이론, 실습 (0) | 2019.02.09 |
[멋사7기] 4.5주차 - 템플릿 상속, url 관리 (0) | 2019.02.03 |
[멋사7기] 4주차 - 6. portfolio (media) (0) | 2019.02.03 |