일반 보기 페이지 나누기 기능
django/views/generic/list.py
class MultipleObjectMixin(ContextMixin):
"""
A mixin for views manipulating multiple objects.
"""
allow_empty = True
queryset = None
model = None
paginate_by = None
paginate_orphans = 0
context_object_name = None
paginator_class = Paginator
page_kwarg = 'page'
ordering = None
이 클래스는ListView의 상위 클래스입니다.django/views/generic/list.py
def get_context_data(self, **kwargs):
"""
Get the context for this view.
"""
queryset = kwargs.pop('object_list', self.object_list)
page_size = self.get_paginate_by(queryset)
context_object_name = self.get_context_object_name(queryset)
if page_size:
paginator, page, queryset, is_paginated = self.paginate_queryset(queryset, page_size)
context = {
'paginator': paginator,
'page_obj': page,
'is_paginated': is_paginated,
'object_list': queryset
}
else:
context = {
'paginator': None,
'page_obj': None,
'is_paginated': False,
'object_list': queryset
}
if context_object_name is not None:
context[context_object_name] = queryset
context.update(kwargs)
return super(MultipleObjectMixin, self).get_context_data(**context)
이 방법은 ListView 상위 클래스의 한 방법입니다.blog/views.py
class ArticlesView(ListView):
template_name = 'blog/articles.html'
context_object_name = 'articles_list'
paginate_by = settings.PAGE_NUM #
def get_queryset(self,):
cid = self.kwargs.get('cid','')
articles_list = Article.objects.filter(category=cid).order_by('-view_times').defer('text')
return articles_list
def get_context_data(self,**kwargs):
return super(ArticlesView,self).get_context_data(**kwargs)
템플릿에서 이 몇 개의 매개 변수를 수신하면 페이지 나누기 기능을 실현할 수 있다
context = {
'paginator': paginator,
paginator 객체
'page_obj': page,
페이지 나누기 대상(몇 페이지의 대상)
'is_paginated': is_paginated,
이게 뭔지 모르겠어요.
'object_list':queryset 템플릿 변수
page_obj.has_previous #
page_obj.has_next #
page_obj.has_other_pages #
page_obj.previous_page_number #
page_obj.next_page_number #
page_obj.start_index # ( ...) (limit [1:5])
page_obj.end_index # ( ...)
page_obj.paginator # paginator
page_obj.number #
paginator.count #
paginator.num_pages #
paginator.page_range #
{% for page in paginator.page_range %}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.