加载初步结果,完成后重新加载(Django或ajax)

加载初步结果,完成后重新加载(Django或ajax),ajax,django,Ajax,Django,我有一个页面加载时间太长,因为它需要从数据库中提取50多个对象。 我想只加载前10个结果,然后让服务器在后台继续加载其余的结果,然后刷新页面 有没有一种方法可以这样做: def foo_view(request): values = Foo.objects.all()[:10] render_to_response(template, values, context_instance=...) values = Foo.objects.all() return r

我有一个页面加载时间太长,因为它需要从数据库中提取50多个对象。 我想只加载前10个结果,然后让服务器在后台继续加载其余的结果,然后刷新页面

有没有一种方法可以这样做:

def foo_view(request):
    values = Foo.objects.all()[:10]
    render_to_response(template, values, context_instance=...)
    values = Foo.objects.all()
    return render_to_response(template, values, context_instance=...)
或者这是ajax的工作?(加载页面后立即重新加载数据。)

谢谢

编辑:

事实证明,我错误地理解了加载时间过长的原因:实际上从数据库中获取50-100个对象几乎不会导致延迟。
在我的模板中有一个方法导致我的n个项目的n^3个数据库命中,而我本应该在view函数中调用它一次,并将结果传递给我的模板。

AJAX是您的解决方案。将前10个对象添加到页面。然后,如果用户向下滚动,则获取另一个10,以此类推。比如推特。还是使用分页?:)

AJAX是一个不错的选择,您可以使用芹菜任务或一些缓存后端来加快速度,这取决于您需要什么。如果对象数量增加,我很可能最终使用AJAX滚动解决方案,谢谢。不幸的是,我相信这只适用于未排序的对象?因为对它们进行排序需要对它们进行全部访问。