Twitter スタイルの ajax ジェネリック ビューの endless_pagination から良い結果が得られません。
以下のリンクされた質問のように、スクロール (または「詳細」をクリック) すると、正しくページ分割された結果が読み込まれますが、親テンプレートはpage_template
. つまり、合計 4 つのリスト要素があるとしENDLESS_PAGINATION_PER_PAGE = 2
ます。ページの読み込み時に、最初の 2 つの要素が表示されます。下にスクロールすると、ページ全体がリストの div に再度読み込まれ、その div のpage_template
div には次の 2 つのリスト要素が含まれます。次のページに相当する要素を追加して、リストを再レンダリングするにはどうすればよいですか?
部分テンプレート:
{# myApp/_fullList.html #}
{% load endless %}
{% lazy_paginate objektz_list %}
{% for object in objektz_list %}
<div class="row object-summary-card">
...
</div>
{% endfor %}
親:
{# objects.html #}
{% block js %}
{{ block.super }}
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="{{ STATIC_URL }}endless_pagination/js/endless-pagination.js"></script>
<script>$.endlessPaginate({paginateOnScroll: true});</script>
{% endblock %}
<div class="row show-for-medium-up ">
{% block landingWidget %}
{% include "objects_list/_whatsHotSlider.html" %}
{% endblock landingWidget %}
</div>
<div class="row">
<div class="small-12 large-7 columns endless_page_template">
{% block objects_list %}
{% include "objects_list/_fullList.html" %}
{% endblock objects_list %}
</div>
<div class="show-for-medium-up large-5 columns">
{% block deals %}
{% include "objects_list/_deals.html" %}
{% endblock deals %}
</div>
</div>
ビュー:
class AObjectListView(AjaxListView):
model = Object
page_template = 'objects_list/_fullList.html'
context_object_name = 'objektz_list'
template_name = 'objects_list/objects.html'
def get(self, request, *args, **kwargs):
if request.is_ajax():
self.template_name = self.page_template
return super(AObjectListView, self).get(request, *args, **kwargs)
つまり、要約すると、onscroll は ajax リクエストを起動し、それがヒットAObjectListView
して呼び出しget
ます。これは、 が占めているはずの場所にobjects.html
再びレンダリングされ_fullList.html
ます。2 番目objects.html
の_fullList.html
レンダリングでは、正しい 2 つのオブジェクトがあります。
docsに基づいて、明示的なis_ajax
呼び出しを気にする必要さえありません。
この修正は私にはうまくいきませんでした-また、なぜそれが必要なのですか?