簡體   English   中英

如何從Django視圖中提取新對象以實現無限滾動?

[英]How to pull new objects from Django view to implement endless scrolling?

我有一個用於新聞文章的Django應用。 我想先加載6篇文章,當用戶滾動瀏覽它們時,新的6篇文章會自動加載(推特式無休止滾動):

我找到了這個程序包,但是它已被棄用,所以我按如下方式進行操作。

這是視圖:

def index(request):
    context_dict = {}

    articles = Article.objects.order_by('-pub_date')[:6]
    context_dict['articles'] =  articles
    context_dict['title'] = "title "
    context_dict['endless_scroll_token'] = '/home/'

    return render(request, 'obj_name/index.html', context_dict)

這是Java腳本/ AJAX代碼:

  <script>
  function yHandler(){

      var wrap = document.getElementById('body_panel');
      var contentHeight = wrap.offsetHeight;
      var yOffset = window.pageYOffset; 
      var y = yOffset + window.innerHeight;

      if(y >= contentHeight){
        var ourRequest = new XMLHttpRequest();
        var token = {{endless_scroll_token}};

        if(token == "/home/")
          {token = '/';}

        ourRequest.open('GET', token);
        ourRequest.send();

        ourRequest.onload = function(){
        var ourData = ourRequest.responseText;
        wrap.innerHTML += ourData

      };
    }
  }
  window.onscroll = yHandler;
</script>

問題在於,這樣一遍又一遍地加載了相同的6篇文章。 如何每次拉6條文章?

謝謝!

這叫做Pagination

有許多分頁數據的方法。 您可以閱讀http://www.django-rest-framework.org/api-guide/pagination/

例如,您告訴服務器您想要第二頁數據。 並且您和服務器還需要知道每個頁面中包含多少個項目。 (這是上述文檔中的PageNumberPagination)

我強烈建議您查看Django rest框架,因為它為您提供了包括分頁在內的許多功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM