2012-02-09 15 views
3

私はページを表示し、日付でグループ化されたメッセージを表示し、AJAX経由でページ番号を付けました。
データベースが2月7日 Django AJAXグループ化による読み込みページ数の増加

に送信された2月8日

  • 3に送信された2月9日
  • 3に送信された9つのメッセージ

    • 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のテンプレートを考えましたが、まだ私は日のグループが繰り返されるかどうかを検出するためにハックする必要があります。

      ご協力いただきますようお願い申し上げます。ありがとうございます。

  • +0

    jQueryで繰り返しグループを処理するよりも、AJAXレスポンスでHTMLを返すのが最も簡単な解決策です。 –

    答えて

    0

    メッセージの数ではなく、日数に基づいてビューのロジックを調整するのはなぜですか?この方法で、返されるデータの量を制御する方法を提供することができますが、クライアント側のテンプレートを使用するためにプレゼンテーションレイヤーを再加工する必要はありません。

    また、これがオプションではない場合、最も簡単で管理しやすいアプローチは、クライアントサイドですべてのグループ化(JavaScriptテンプレートなど)を処理しているようです。

    +0

    クライアント側でグループ化するのが最善の解決策だと思いますが、今は私のハックな解決策を続けていきます。 – Radian

    関連する問題