我有一个视图,我希望用户能够向下滚动一小部分1000多个django对象,一次不超过10个。也是搜索功能
最好的选择是什么?
我应该将对象存储在浏览器中并检索它们吗? 我应该只重写视图以一次显示10个吗? 是否有优雅的js解决方案?
谢谢你们。
答案 0 :(得分:2)
Django已经内置Pagination。有几个项目提供了AJAX解决方案,其中一个是django-endless-pagination。
另一种解决方案可能是DataTables。还有一个项目可以帮助将它与Django集成,称为django-datatables-view
答案 1 :(得分:1)
几乎没有任何情况可以将所有内容加载到客户端以进行分页。例如,您可以使用firebase或很少重新加载页面。
因此,对于您的情况,您应该实现ajax视图以获取所需的数据部分。就像Martin说的那样,Django拥有性感且易于使用的Paginator类,它可以帮助你处理所有事情!
您的观点如下:
@ajax_request
def my_view_ajax(req):
pages = Paginator(Doc.objects.all(), 10)
page = pages.page(int(request.GET.get('page', 1)))
return {
'total_pages': p.num_pages,
'data': [{
'id': doc.id,
'title': doc.title,
'excerpt': doc.excerpt,
} for doc in page.object_list]
}
因此,您需要显示总页数和数据。