2015-03-31 61 views
1
  1. 的手动设置计数我需要手动设置页面的计数分页中view.py
  2. 我需要获得当前页面的数量在函数处理它。 我旁边view.py:获取针对分页的当前页和页面

    class VideoListView(ListView): 
        template_name = "video/list.html" 
        context_object_name = 'videos' 
        paginate_by = 12 
        request = requests.get(settings.YOUTUBE_VIDEO_COUNT_URL) 
        count = simplejson.loads(request.text)['data']['totalItems'] 
    
        def get_queryset(self, **kwargs): 
         request = requests.get(settings.YOUTUBE_VIDEO_URL) 
         data_about = simplejson.loads(request.text) 
         video_list = [] 
         for item in data_about['data']['items']: 
          video_list.append(item) 
         return video_list 
    

的页面数量必须:计数/ paginate_by,并在每一个页面请求JSON会有所不同。

回答

2

Django的分页通过存储GET,所以在您的的ListView你需要访问:

# This will assume, if no page selected, it is on the first page 
actual_page = request.GET.get('page', 1) 
if actual_page: 
    print actual_page 

所以在您的列表视图代码,取决于你需要它,但如果你需要它在你的get_queryset功能,您可以访问使用自我要求

class VideoListView(ListView): 
    # ..... your fields 

    def get_queryset(self, **kwargs): 
     # ... Your code ... 
     actual_page = self.request.GET.get('page', 1) 
     if actual_page: 
      print actual_page 
     # ... Your code ... 

使用Django分页自定义分页对象:

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 

def CreatePagination(request, obj_list): 
    # Create the pagination 
    RESULTS_PER_PAGE = 10 
    paginator = Paginator(obj_list, RESULTS_PER_PAGE) 
    page = request.GET.get('page') # Actual page 
    try: 
     page_list = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     page_list = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     page_list = paginator.page(paginator.num_pages) 

    return page_list 

要使用此功能CreatePagination你需要将它传递请求和对象列表。该请求用于获取实际页面,并使用对象列表生成分页。

该函数将返回,你可以在模板管理您所管理从ListView

+0

由于自动生成的分页以同样的方式分页,所以我可以手动设置为针对分页的页面数? – 2015-03-31 09:32:03

+0

如果你想自定义分页,我建议你检查[Django分页](https://docs.djangoproject.com/en/1.7/topics/pagination/#module-django.core.paginator),因为更多的可自定义,你可以在那里传递一个QuerySet,它会创建一个自定义分页,但是,你可以改变你的Python代码中的实际页面。我将在我的答案中使用Django分页添加自定义分页 – AlvaroAV 2015-03-31 09:36:56