2015-03-31 59 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