2017-07-05 1 views
0

私はニュース記事用のDjangoアプリを持っています。最初に6つの記事を読み込み、ユーザーがそれらをスクロールすると、新しい6つの記事が自動的に読み込まれます(twitterスタイルの無限スクロール)。エンドレススクロールを実装するためにDjangoビューから新しいオブジェクトを引き出す方法は?

私はthisパッケージを見つけましたが、廃止予定です。

これは図である。

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 新しいの記事を毎回引きますか?

ありがとうございます!

答えて

1

これは、ページデータには多くの方法がありPagination

と呼ばれています。 あなたは読むことができますhttp://www.django-rest-framework.org/api-guide/pagination/

例えば、あなたは#2ページのデータが必要であることをサーバーに伝えます。 あなたとサーバーはまた、各ページに含まれるアイテムの数を知る必要があります。 (これは上記文書のPageNumberPaginationです)

ページングを含む多くの機能を提供するので、Django Restフレームワークを見ることを強くお勧めします。

+0

私はツイッタースタイルの無限スクロールをしたいと思います。私は私の質問を編集しました。 – Seio

+1

これは同じことですが、ユーザーがページの一番下までスクロールするときに新しいページを尋ねる必要があります。 – eugene

関連する問題