我没有从 never_pagination twitter 风格的 ajax 通用视图中得到好的结果。
如下面的链接问题所示,当我滚动(或单击“更多”)时,会加载正确分页的结果,但父模板会加载到应该包含page_template
. 也就是说,假设我总共有 4 个列表元素,并且ENDLESS_PAGINATION_PER_PAGE = 2
. 在页面加载时,它会显示前两个元素。当我向下滚动时,它会在列表的 div 中再次加载整个页面,并且该 div 的page_template
div 包含接下来的两个列表元素。我如何让它重新渲染列表,添加下一页的元素?
部分模板:
{# 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
。在第二个objects.html
的_fullList.html
渲染中,它确实有正确的两个对象。
根据文档,我什至不必为显式is_ajax
调用而烦恼。
这个修复对我不起作用——还有,为什么有必要这样做?