是否可以在向下滚动时实现facebook样式的内容加载?我想在电子商务网站中实现它.每个类别中有很多项目,类别页面变得太长.我可以实现页码,但我的客户希望我实现facebook类型的加载.有什么我可以用的吗?该网站的其余部分已经建成.
我确实研究过django-endless-pagination但是无法让它工作.有没有它的演示,以便我可以调查它?
我试图弄清楚是否可以在我的查询集上进行视图后处理,然后在使用django-endless-pagination进行无限滚动的django模板中进行渲染.
我有特定于视图的逻辑,它根据上下文忽略查询集的某些结果,以及向列表中的对象添加属性以供模板使用.此逻辑不能通过SQL执行,因为它不是模型固有的.它必须在python中完成.
使用django-endless-pagination和其他预先滚动的django分页模块,所有逻辑似乎都是由模板标签执行的,从而阻止了在呈现阶段(这是一个django原则)之前执行业务逻辑的能力.
因为我的视图逻辑在模板标签执行之前运行结果集,所以我将失去此模块提供的优化(例如带有分页的SQL查询,例如限制20;偏移20).每次用户页面时,我的代码都会遍历整个未分页的结果列表,从而绕过模板标记提供的惰性分页优势.
没有直接将我的代码移入分页模块(我宁愿不这样做,并且需要在请求上下文中添加一堆额外数据以用于标记),还有其他选择吗?
谢谢!
我正在尝试使用Django Endless Pagination来实现 Twitter/Instagram 样式分页的效果,其中一旦用户滚动到页面底部,就会将新内容加载到页面上。使用上述模块,我已经能够做到这一点。但是,我有一个与性能相关的问题。我发送数据的视图仍然加载数据库中的所有行。仅在模板侧显示其中的一部分。
class IndexView(BaseAjaxViewList):
template_name = 'polls/index.html'
page_template = 'polls/item_index.html'
context_object_name = 'data'
model = Question
def get_context_data(self,**kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
print(len(context["data"]))
return context
Run Code Online (Sandbox Code Playgroud)
我认为只能从数据库访问 'n' 个项目,并且当发生滚动时会有另一个 db 调用等等,这可以提高页面的加载性能。假设页面中有 1000 个项目,那么理想情况下,我希望首先加载 50 个项目(在 1 个 db 调用中访问 50 个项目),然后一旦用户滚动并到达页面底部,然后再加载 50 个项目应该被访问和显示。但是,我尝试在场景下进行检查,似乎所有 1000 次调用都是使用此模块同时进行的。仅在模板端,一次显示 50 个。这是真的?是否有任何 django 模块可以做到这一点,或者我必须编写自己的 ajax 调用等?
参考模板如下:
主要模板
<h2>Polls:</h2>
{% include page_template %}
{% block js %}
{{ block.super }}
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="{% static 'endless_pagination/js/endless-pagination.js' %}"></script>
<script>$.endlessPaginate();</script>
{% endblock %} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用django-endless-pagination在滚动上实现连续分页.
页面的初始渲染工作正常.但是,滚动后,整个 html页面内容将加载到endless_page_template div中,而不是page_template中所需的部分html内容.结果有点像在镜子里面反射另一面镜子.我相信返回的查询集是正确的,因为在不尝试使用"paginateOnScroll"时分页结果是正确的.
我的观点的相关部分如下.我正在使用CreateView,因为我在与分页注释相同的页面上有注释表单.
class MyIndex(CreateView):
form_class = CommentForm
template_name = 'my/index.html'
page_template = 'my/comments.html'
def get_context_data(self, **kwargs):
context = super(MyIndex, self).get_context_data(**kwargs)
context.update({
'comments': Comment.objects.order_by('-id').filter(parent=None),
'page_template': self.page_template,
})
return context
Run Code Online (Sandbox Code Playgroud)
我/ index.html模板的相关部分(主模板)
<script src="{% static 'endless_pagination/js/endless-pagination.js' %}"></script>
<script type="text/javascript">
$.endlessPaginate({
paginateOnScroll: true
});
</script>
<div class="endless_page_template">
{% include page_template %}
</div>
Run Code Online (Sandbox Code Playgroud)
我/ comments.html的相关部分(page_template)
{% load endless %}
{% paginate comments %}
{% for comment in comments %}
<span class="lead">{{ comment.name }}</span>
{{ comment.message}}
{% …Run Code Online (Sandbox Code Playgroud) Django Endless Pagination的默认分页(对我来说非常适合)首先显示最旧的对象,然后通过较新的对象进行描述,即最后一页包含最新的对象.我正在尝试使用它来分页评论,并希望首先显示最新的评论,然后通过较旧的评论(如在Facebook上).对我而言,这似乎是一个非常标准的要求,但我找不到任何解决方案.任何帮助,将不胜感激.
django pagination django-comments django-pagination django-endless-pagination