我試圖用Django Endless Pagination實現PF Twitter的/ Instagram的風格分頁,其中,一旦用戶滾動到頁面的底部,然後新的內容被加載到頁面的效果。使用上述模塊,我已經能夠做到這一點。但是,我有一個性能相關的問題。我從哪裏發送數據的視圖仍會加載數據庫中的所有行。只有在模板方面,它的一部分被顯示。Django的懶加載分頁
class IndexView(BaseAjaxViewList):
template_name = 'polls/index.html'
page_template = 'polls/item_index.html'
context_object_name = 'data'
model = Question
def get_context_data(self,**kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
print(len(context["data"]))
return context
我以爲只有「N」數量的項目會從數據庫進行訪問,當滾動發生會有另一個DB調用等等,這樣可以提高頁面加載性能。假設頁面中有1000個項目,那麼理想情況下,我希望(比如說50)首先加載的項目(在1分貝調用中要訪問的50個項目),然後一旦用戶滾動並進入頁面的底部,則接下來的50項目應該被訪問和顯示。但是,我試圖檢查場景下面,似乎所有的1000個電話都是使用這個模塊立即進行的。僅在模板方面,每次顯示50個。這是真的?是否有任何Django模塊這樣做,或者我將不得不寫我自己的Ajax調用等?
僅供參考模板如下:
主模板
<h2>Polls:</h2>
{% include page_template %}
{% block js %}
{{ block.super }}
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="{% static 'endless_pagination/js/endless-pagination.js' %}"></script>
<script>$.endlessPaginate();</script>
{% endblock %}
的page_template
:
{% load endless %}
{% paginate entries %}
{% for entry in entries %}
{# your code to show the entry #}
{% endfor %}
{% show_more %}
理想情況下,您會以這樣的方式編寫數據庫查詢,以便您通過一次調用檢索視圖所需的所有項目。以下情況_(需要訪問的50個項目/ 50分貝呼叫)_是一個惡夢場景! – Alexander
@alex對不起。這句話的框架是錯誤的。我正在做1分貝的電話以獲得500件物品。但是,一旦我得到這500個項目,我做了大量的處理。這是花費時間,因此頁面加載緩慢。我想要的是,在1分貝呼叫中,獲得50個項目,處理它們,將它們發送到模板。然後,一旦用戶滾動到html頁面的底部,我再次調用db以獲取接下來的50個項目,處理它們並將它們發送回模板。我希望我現在清楚。 – Why