私はページを表示し、日付でグループ化されたメッセージを表示し、AJAX経由でページ番号を付けました。
データベースが2月7日 Django AJAXグループ化による読み込みページ数の増加
に送信された2月8日
- 3を含ん検討とクエリセットは5件のメッセージのみによって制限されます。
コードの表示この
page = Paginator(queryset, int(request.GET['limit'])).page(request.GET['page']) return paginator.page(request.GET['page']).object_list
HTMLのように見えるが、この
<div class='messages-container'> {% include 'messages-snippet.html' %} </div> <a href='?page=2&limit=5'>Load older</a>
とメッセージスニペットのHTMLがこの
<div class='day-messages'> <span>9 Feb 2012</span> <p class='message'>Message 1</p> <p class='message'>Message 2</p> <p class='message'>Message 3</p> </div> <div class='day-messages'> <span>8 Feb 2012</span> <p class='message'>Message 4</p> <p class='message'>Message 5</p> </div>
ように、クライアントをクリックし、「負荷のように見えるようになります。古い "の場合、ブラウザは同じビューにリクエストを送信します。これにより、メッセージのスニでこの時間がレンダリングされますPPETテンプレートは、私は親divの中に、このHTMLを挿入すると、この
<div class='day-messages'> <span>8 Feb 2012</span> <p class='message'>Message 6</p> </div> <div class='day-messages'> <span>7 Feb 2012</span> <p class='message'>Message 7</p> <p class='message'>Message 8</p> </div>
のようなHTMLコードが得られ、その結果、今私は(同じ日に2つのグループを持っているこの
<div class='messages-container'> <div class='day-messages'> <span>9 Feb 2012</span> <p class='message'>Message 1</p> <p class='message'>Message 2</p> <p class='message'>Message 3</p> </div> <div class='day-messages'> <span>8 Feb 2012</span> <p class='message'>Message 4</p> <p class='message'>Message 5</p> </div> <div class='day-messages'> <span>8 Feb 2012</span> <p class='message'>Message 6</p> </div> <div class='day-messages'> <span>7 Feb 2012</span> <p class='message'>Message 7</p> <p class='message'>Message 8</p> </div> </div> <a href='?page=2&limit=5'>Load older</a>
のようになります2012年2月8日)
現在、私はこれを修正するためのハックな解決策を講じています。私は繰り返しグループがあるかどうかを検出し、それらをマージします。しかし、私はこの解決策が嫌いです。誰かがより良い解決策を考えているのだろうかと思っています。注:私はDjango Endless Paginationを見ました。それは私のためにajaxの部分を処理するようですが、グループ化の問題は解決しません。
また、私はjQueryのテンプレートを考えましたが、まだ私は日のグループが繰り返されるかどうかを検出するためにハックする必要があります。ご協力いただきますようお願い申し上げます。ありがとうございます。
jQueryで繰り返しグループを処理するよりも、AJAXレスポンスでHTMLを返すのが最も簡単な解決策です。 –