질문 등록,목록 조회 후 다시 메인으로 돌아가는 장치를 만든다.
모든 페이지에서 공통적으로 보여야 하므로 base.html 템플릿에 추가한다.
페이징을 위한 장고 클래스
def index(request):
page = request.GET.get('page', 1)
#작성 일시 역순으로 정렬
question_list = Question.objects.order_by('-created_at')
#페이지당 10개씩 보여주기
paginator = Paginator(question_list, 10)
page_obj = paginator.get_page(page)
context = {'question_list': page_obj}
return render(request, 'pybo/question_list.html', context)
page = request.GET.get('page', '1')
은 http://localhost:8000/pybo/?page=1
처럼 GET 방식으로 호출된 URL에서 page값을 가져올 때 사용한다.
만약 http://localhost:8000/pybo/
처럼 page값 없이 호출된 경우에는 디폴트로 1이라는 값을 설정한다.
page_obj
: 요청된 페이지 = 페이징 객체항목 | 설명 |
---|---|
paginator.count | 전체 게시물 개수 |
paginator.per_page | 페이지당 보여줄 게시물 개수 |
paginator.page_range | 페이지 범위 |
number | 현재 페이지 번호 |
previous_page_number | 이전 페이지 번호 |
next_page_number | 다음 페이지 번호 |
has_previous | 이전 페이지 유무 |
has_next | 다음 페이지 유무 |
start_index | 현재 페이지 시작 인덱스(1부터 시작) |
end_index | 현재 페이지의 끝 인덱스(1부터 시작) |
다른 페이지로 이동해도 게시물 번호가 1부터 시작한다.
번호 = 전체건수 - 시작인덱스 - 현재인덱스 + 1