0

Facebook では、下にスクロールすると、投稿が 1 つずつ読み込まれます。Djangoでこれを行うにはどうすればよいですか? 他に何を使用する必要がありますか?

時間がかからないように、必要なすべてのオブジェクトをビューからテンプレートに渡すのは良い習慣ですか?

4

2 に答える 2

0

プロセスがどのように機能するかの一般的な概要:

  • ページには、すべての画像のサブセットが読み込まれます。
  • 特定の場所にスクロールすると、Web ページはAJAX要求を django サーバーの「さらに読み込む」URL に発行します。GET/POST パラメーターとして、または URL の一部として、AJAX 要求には、クエリセット内の現在の位置 (これまでに読み込まれた数) を示す情報が含まれています。Web ページには関数があります。たとえばrecievedMore、この関数はコールバックとして AJAX 呼び出しに提供されます。
  • 「load_more」URL は、load_moredjango ビューによってサポートされています。ビューは、AJAX 要求の情報を使用して、load_more表示される次の画像セットまで QuerySet をフィルタリングします。ビューは、フィルタリングされた QuerSet を使用して HTML のスニピットをレンダリングし、それを AJAX 要求への応答として返します。
  • Web ページは応答を受け取り、recievedMoreサーバーからのデータを使用して関数を呼び出します。このrecievedMore関数は、応答をページ上の適切な要素に追加します。

クライアント側で無限スクロールライブラリとJQueryを使用すると、これをより簡単に実装できます。

Django ページネーションも関連しています。

于 2013-03-15T22:24:08.750 に答える
-1

ajaxリクエストを作成するjqueryプラグインである無限スクロール を使用
して、マークアップのその場所にレスポンスを配置できます

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

今あなたのテンプレートに:
を使用してアイテムの次のページがあるかどうかを確認 しpage_obj.has_previous
、その URL を無限スクロールに送ります: ?page={{ objects.next_page_number }}

于 2013-03-16T03:54:02.027 に答える