2013-03-15 31 views
0

在Facebook中,當我們向下滾動時,它會一個接一個地加載帖子。我如何在Django中做到這一點?我還需要使用什麼?如何在瀏覽頁面時加載一些對象

將視圖中所有必需的對象傳遞給模板是不是很好的做法,這樣不會花費太多時間?

+0

你在找什麼叫「無限滾動」,並需要JavaScript。在Django中,創建兩個模板和相關的控制器 - 一個生成整個頁面,另一個生成「更多」的文章。當用戶向底部滾動時,ajax調用可以獲取這些「更多」的帖子(使用最後一個位置作爲「從哪裏開始」索引)並將它們附加到作爲您的發佈容器的DIV。 – 2013-03-15 22:04:23

回答

0

A的總體概述這個過程可能是如何工作的:

  • 該頁面加載的所有圖像的子集。
  • 滾動到某個位置後,網頁向django服務器上的'加載更多'網址發出請求AJAX。無論是作爲GET/POST參數還是作爲url的一部分,AJAX請求都包含用於指示查詢集中當前位置的信息(到目前爲止已加載了多少個)。該網頁有一個功能,比如說recievedMore,這個功能作爲回調提供給AJAX調用。
  • 「load_more」的URL由django視圖支持。 load_more視圖使用AJAX請求中的信息將QuerySet過濾爲將顯示的下一組圖像。該視圖使用過濾的QuerSet來呈現HTML的片段,並將其作爲對AJAX請求的響應返回。
  • 網頁接收到響應,使用來自服務器的數據調用recievedMore函數。 recievedMore函數將響應附加到頁面上的適當元素。

使用在客戶端的Infinite Scrolling庫和JQuery使得實施這一容易得多。

Django Pagination也是相關的。

-1

可以使用infinite scroll
它是一個jQuery插件,使Ajax請求 - 並把響應在其位置在標記

Django的通用ListView控件支持分頁開箱

使用它像這樣:

import models 
from django.views.generic import ListView 

class ObjectListView(ListView): 
    model = SomeModel 
    template_name = 'app/model_list.html' 
    context_object_name = "objects" 
    paginate_by = 10 
現在

在您的模板:
檢查是否有項目的下一頁S使用: page_obj.has_previous
再喂這個URL無限滾動: ?page={{ objects.next_page_number }}

相關問題