안녕하세요, 여러분!페이지 아이템을 장고 페이지 매김에 표시하십시오.
저는 템플릿에서 django 페이지 매김을 사용하여 "Showing 1-10 of 52"를 표시하는 방법을 알아 내려고하고 있습니다.
페이지 매기기 자체를 수행했지만이 요구 사항에 대한 내 마음에는 아무런 변화가 없습니다. 아이디어가 있으십니까?
안녕하세요, 여러분!페이지 아이템을 장고 페이지 매김에 표시하십시오.
저는 템플릿에서 django 페이지 매김을 사용하여 "Showing 1-10 of 52"를 표시하는 방법을 알아 내려고하고 있습니다.
페이지 매기기 자체를 수행했지만이 요구 사항에 대한 내 마음에는 아무런 변화가 없습니다. 아이디어가 있으십니까?
모든 사람이 왜 그렇게 많은 것을 복잡하게하는지 모릅니다. the documentation이 보여 주듯이이 모든 속성은 이미 사용 가능합니다.
매기기 개체는 모든 페이지에서 개체의 총 수를 표시하는 count
속성을 가지고 있고, Page
객체는 start_index
및 end_index
특성을 가지고있다.
{{ page.start_index }} to {{ page.end_index }} of {{ page.paginator.count }}.
totalPages = math.ceil(float(totalRecords)/recordsPerPage)
또는
paginatorInstance.num_pages # this is there by default
, 그건 어렵지 않았다 그것을했다?
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
}
(나는 컴파일러의 혜택없이이 코드를 작성
보기 때문에 시험 그것)
그냥 템플릿을 다음과 같이 pagintator 속성에 액세스 매기기를 보내 :
그래서, 가정 당신이 page
에 서식 컨텍스트를 통과 {{offers.previous_page_number}}, {{offers.next_page_number}} {{offers.paginator.count}} –
gerpaick
무대 뒤에서 다소 복잡한 것을해야 할 것입니다. 그리고 내가 파이썬 개발자 일 때, 오랫동안 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를 반복 할 수있는 객체를 반복 할 수 있습니다.
나는 이것이 당신이 어떻게 이것을 깔끔하게 할 수 있는지에 대한 일반적인 아이디어를 제공하기를 바랍니다.
Peharps는 내장 된 django.core.paginator.Paginator 클래스를 서브 클래스 화하여 lower_limit 및 upper_limit 속성을 추가하는 것이 좋습니다. – webgonewild
매우 가능합니다. 저는 장고를 조용하게 사용하지 않았습니다. 또한 num_pages는 내가 앉아있는 곳에서 유효하지 않은 통계로 보입니다. 전체 페이지 수가 아닌 개체의 총 수를 원하는 것처럼 보이지만 장고의 페이지 매김기에 다른 해결책이있을 수 있습니다. –
워! 이것은 정확하게 내가 찾고 있던 것입니다. 감사! – webgonewild
이것은 매우 도움이되었습니다 - 감사합니다. 단지'ListView'에서 객체는'page'보다는'page_obj'라고 부릅니다. – BigglesZX