반응형
<home.html> 의 블로그 글들 페이지네이션 하고 싶을 때 -> 방법은 많음
요약하자면
1.무슨 객체를 , 한 페이지 당 몇개씩 실을 것인지 결정 -> Paginator(object, num)
2.내가 원하는 페이지 갖고 오기 -> 페이지네이터객체.get_page(갖고오고싶은 페이지번호)
3.갖고 온 페이지 html에 띄우기 -> 페이지객체의 매소드함수 + template언어
#page 객체의 메소드 함수
-page.count() : 총 객체 수(총 블로그 글 개수)
-page.num_pages() : 총 페이지 개수
-page.page(n) : n번째 페이지 리턴
-page.page_range() :(1부터 시작하는) 페이지 리스트 반환
-page.get_page(n) :n번째 페이지 갖고 오기
-page.has_next() : 다음페이지 있으면 true/ 없으면 false
-page.has_previous() : 이전 페이지 있으면 true/없으면 false
-page.previous_page_number() : 이전 페이지 번호 반환
1.blog app /views.py -> home.html이 있는 app에서
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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, 'blog/home.html', {'blogs': blogs, 'posts':posts}) | cs |
## 갑자기 한글 파일 깨짐 그럴 때는 base.html 에
1 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | cs |
2.home.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 | {% extends 'base.html' %} {% block content%} {% for blog in posts %} <div style="margin:30px auto 30px auto; display: block" class="container" > <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> </div> {% endfor %} {#First Previews 3of4 Next Last#} {#first previous#} {% if posts.has_previous%} <a href="?page=1">First</a> <a href="?page={{posts.previous_page_number}}">Previous</a> {% endif %} {#3of4#} <span>{{posts.number}}</span> <span>of</span> <span>{{posts.paginator.num_pages}}</span> {#Next Last#} {% if posts.has_next%} <a href="?page={{posts.next_page_number}}">Next</a> <a href="?page={{posts.paginator.num_pages}}">Last</a> {% endif %} {% endblock %} | cs |
##container가 전부를 감싸는 오류 생김 -> div어디 감싸는지 endblock 어디에 넣어주는 지 잘 보쟈
반응형
'Web > Django' 카테고리의 다른 글
[6주차]Form (0) | 2019.03.06 |
---|---|
[5.5주차]Faker (0) | 2019.03.05 |
[5주차]1.로그인,회원가입 (0) | 2019.03.05 |
[4주차]2.blog-(3) (0) | 2019.03.05 |
[4주차]2.blog-(2) (0) | 2019.03.04 |