-
Django pagenation paginator.num_pagesPython/초간단 장고 Django 2022. 9. 21. 00:21반응형
Django의 페이지네이션 기능의
자세한 설명은 다음을 참고하시고..
https://wikidocs.net/71240#_2저자께서 마지막에 이런 숙제를 남겨두셨네요.
지금까지 만든 페이징 기능에 '처음'과 '마지막' 링크를 추가하고 ...
def list_view(request): page = request.GET.get('page', '1') px_name = request.GET.get('name', '') if name == '' or name is None: my_list = My.objects.all().order_by('id') else: my_list = My.objects.filter(Q(name__icontains=name)).distinct().order_by('id') paginator = Paginator(my_list, 10) # 페이지당 10개의 아이템 page_obj = paginator.get_page(page) # 현재 페이지 - 출력할 아이템. context = { 'my_list': page_obj, 'max_index': paginator.num_pages, # 마지막 페이지 'px_name': px_name } return render(request, 'my_project/list_view.html', context)
마지막 페이지는 Pagenator의 객체인 paginator에서 paginator.num_pages 속성으로 알 수 있습니다.
시작 페이지는 1이죠. 어렵지 않습니다.아래 부분에서 페이지를 계속 내리다 보면 음수로 페이지 접근을 하는데 상당히 불편합니다.
커스텀 템플릿 필터를 만들면 됩니다.{% if page_number >= question_list.number|add:-5 and page_number <= question_list.number|add:5 %}
@register.filter def sub(value, arg): """subtract""" return temp if (temp := value - arg) > 1 else 1
반응형