0

在 Facebook 中,当我们向下滚动时,它会一个一个地加载帖子。我怎样才能在 Django 中做到这一点?我还需要使用什么?

将所有必需的对象从视图传递到模板是否是一种好习惯,这样就不会花费太多时间?

4

2 回答 2

0

该过程如何工作的一般概述:

  • 页面加载所有图像的子集。
  • 滚动到某个位置时,网页会向 django 服务器上的“加载更多”URL 发出AJAX请求。作为 GET/POST 参数或作为 url 的一部分,AJAX 请求包含指示查询集中当前位置的信息(到目前为止已经加载了多少)。网页有一个函数,可以说recievedMore,这个函数作为回调提供给 AJAX 调用。
  • 'load_more' URL 由load_moredjango 视图支持。该load_more视图使用 AJAX 请求中的信息将 QuerySet 过滤到将显示的下一组图像。该视图使用过滤后的 QuerSet 呈现 HTML 片段并将其作为对 AJAX 请求的响应返回。
  • 网页接收响应,recievedMore使用来自服务器的数据调用函数。该recievedMore函数将响应附加到页面上的适当元素。

在客户端使用无限滚动库和JQuery可以更轻松地实现这一点。

Django Pagination也是相关的。

于 2013-03-15T22:24:08.750 回答
-1

您可以使用无限滚动
它的一个 jquery 插件来发出 ajax 请求 - 并将响应放在标记中的位置

Django 的通用 ListView 支持开箱即用的分页

像这样使用它:

import models
from django.views.generic import ListView

class ObjectListView(ListView):
    model = SomeModel
    template_name = 'app/model_list.html'
    context_object_name = "objects"
    paginate_by = 10

现在在您的模板中:
检查是否有下一页项目使用: page_obj.has_previous
然后将该网址提供给无限滚动: ?page={{ objects.next_page_number }}

于 2013-03-16T03:54:02.027 回答