2012-07-16 32 views
0

我有一個加載時間太長的頁面,因爲它需要從數據庫中提取50多個對象。 我想只加載頁面,只有前10個結果,然後讓服務器繼續加載其餘的後臺,然後刷新頁面。加載初步結果,然後在完成時重新加載(Django或ajax)

有沒有做這樣的事情的一種方式:

def foo_view(request): 
    values = Foo.objects.all()[:10] 
    render_to_response(template, values, context_instance=...) 
    values = Foo.objects.all() 
    return render_to_response(template, values, context_instance=...) 

或者這是對Ajax的工作嗎? (只要頁面加載,重新加載數據。)

謝謝!

編輯:

事實證明,我錯了有關的加載時間較長的原因:實際取50-100對象從數據庫中幾乎沒有產生延遲。 在我的模板中有一種方法可以爲我的n個項目產生n^3個數據庫命中,當我在視圖函數中調用一次並將結果傳遞給我的模板時。

+0

AJAX是要走的路,你可以使用芹菜任務或緩存後端來加快取決於你需要的東西 – 2012-07-16 13:34:47

回答

0

AJAX是您的解決方案。將前10個對象添加到您的頁面。然後,如果用戶向下滾動獲取另一個10等等。像Twitter一樣。或者使用分頁? :)

+0

如果對象數量增加,我最終可能會使用ajax滾動解決方案,謝謝。不幸的是,這隻適用於未排序的對象,我相信?由於排序他們需要訪問他們所有不管。 – Ollyver 2012-07-19 08:26:11