2009-11-06 3 views
9

안녕하세요, 여러분!페이지 아이템을 장고 페이지 매김에 표시하십시오.

저는 템플릿에서 django 페이지 매김을 사용하여 "Showing 1-10 of 52"를 표시하는 방법을 알아 내려고하고 있습니다.

페이지 매기기 자체를 수행했지만이 요구 사항에 대한 내 마음에는 아무런 변화가 없습니다. 아이디어가 있으십니까?

답변

37

모든 사람이 왜 그렇게 많은 것을 복잡하게하는지 모릅니다. the documentation이 보여 주듯이이 모든 속성은 이미 사용 가능합니다.

매기기 개체는 모든 페이지에서 개체의 총 수를 표시하는 count 속성을 가지고 있고, Page 객체는 start_indexend_index 특성을 가지고있다.

{{ page.start_index }} to {{ page.end_index }} of {{ page.paginator.count }}. 
+0

워! 이것은 정확하게 내가 찾고 있던 것입니다. 감사! – webgonewild

+1

이것은 매우 도움이되었습니다 - 감사합니다. 단지'ListView'에서 객체는'page'보다는'page_obj'라고 부릅니다. – BigglesZX

0
totalPages = math.ceil(float(totalRecords)/recordsPerPage) 

또는

paginatorInstance.num_pages # this is there by default 

, 그건 어렵지 않았다 그것을했다?

1

django Paginator 개체는 num_pages 속성을가집니다. 보기에서 템플릿에 올바른 데이터를 전달하고 거기에 표시 할 수 있습니다.

있도록 (거친) 예를 들어 : 템플릿

showing {{start_count} - {{end_count}} of {{num_pages}} 

current_page = ## input param 
items_per_page = 10 
paginator = Paginator(result, items_per_page)  

... 
return render_to_response('template.html', 
    { 
    'num_pages': paginator.num_pages, 
    'start_count': items_per_page * current_page + 1, 
    'end_count': (items_per_page * current_page + 1) + len(paginator(current_page).object_list) 
    'items_per_page': items_per_page 
    } 

(나는 컴파일러의 혜택없이이 코드를 작성

보기 때문에 시험 그것)

+0

그냥 템플릿을 다음과 같이 pagintator 속성에 액세스 매기기를 보내 :

그래서, 가정 당신이 page에 서식 컨텍스트를 통과 {{offers.previous_page_number}}, {{offers.next_page_number}} {{offers.paginator.count}} – gerpaick

3

무대 뒤에서 다소 복잡한 것을해야 할 것입니다. 그리고 내가 파이썬 개발자 일 때, 오랫동안 werkzeug와 jinja2를 사용 해왔다. 그래서 장고 문법이 조금 녹슬었다. 또한 이것은 (브라우저에서 여기에 입력 한 것과 같이) 드라이 코드로 작성되었으며 의도 한대로 작동하는지 테스트해야합니다.

일반적으로 페이지 매김 개체를 만들고 페이지별로 필터링되지 않은 쿼리 개체에 전달합니다. 페이지 당 몇 페이지인지, 어떤 페이지에 있는지도 알 수 있습니다.

그래서 막연하게 비슷한 : 다음

Paginator(query, objects_per_page, current_page_number) 

그리고는 템플릿에 결과 매기기 객체를 전달합니다.

def __init__(self, query, objects_per_page, current_page_number): 
    self.total = query.count() 

    self.per_page = objects_per_page 
    self.current_page_number = current_page_number 
    self.lower_limit = objects_per_page * current_page_number 
    self.upper_limit = objects_per_page * (current_page_number + 1) 

    if self.upper_limit > self.total: 
     self.upper_limit = self.total 

    self.objects = query[self.lower_limit - 1:self.upper_limit - 1] 

다음 템플릿에서 당신이 할 거라고 뭔가 당신이 준비가되면

Showing {{paginator.lower_limit}}-{{paginator.upper_limit}} of {{paginator.total}} 

같은 이상 :과 유사한 무언가를하고 싶어
페이지 배열의 초기화 내부

paginator.objects를 반복 할 수있는 객체를 반복 할 수 있습니다.

나는 이것이 당신이 어떻게 이것을 깔끔하게 할 수 있는지에 대한 일반적인 아이디어를 제공하기를 바랍니다.

+0

Peharps는 내장 된 django.core.paginator.Paginator 클래스를 서브 클래스 화하여 lower_limit 및 upper_limit 속성을 추가하는 것이 좋습니다. – webgonewild

+0

매우 가능합니다. 저는 장고를 조용하게 사용하지 않았습니다. 또한 num_pages는 내가 앉아있는 곳에서 유효하지 않은 통계로 보입니다. 전체 페이지 수가 아닌 개체의 총 수를 원하는 것처럼 보이지만 장고의 페이지 매김기에 다른 해결책이있을 수 있습니다. –

관련 문제