내비게이션바

질문 등록,목록 조회 후 다시 메인으로 돌아가는 장치를 만든다.

모든 페이지에서 공통적으로 보여야 하므로 base.html 템플릿에 추가한다.

스크린샷 2024-07-11 오전 12.47.21.png

Paginator

페이징을 위한 장고 클래스

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이라는 값을 설정한다.

항목 설명
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