doc*_*ock 3 python django rest infinite-scroll django-rest-framework
我正在使用 Django Rest Framework 创建一个 REST API。API 将提供大量数据,我想在页面上使用无限滚动。我想在前端使用 Angular。我不确定如何提供数据,以便并非所有数据都必须发送一次,而仅在用户向下滚动时发送。
我正在使用序列化程序类 -
class CompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = ('company_name', 'location', 'founded_year')
Run Code Online (Sandbox Code Playgroud)
我不确定如何实现这一点。我应该使用 Django Endless Pagination 还是可以使用 django-rest-framework 提供的分页来完成。我也不确定它的前端将如何工作。Web 开发新手在这里,请帮助。
创建一个 ListAPIView 子类
from rest_framework import pagination, generics
class CompanyPagination(pagination.PageNumberPagination):
page_size = 20 # the no. of company objects you want to send in one go
# Assume url for this view is /api/v1/companies/
class CompanyListView(generics.ListAPIView):
queryset = Company.objects.all()
serializer_class = CompanySerializer
pagination_class = CompanyPagination
Run Code Online (Sandbox Code Playgroud)
完成此操作后,您可以通过调用http://your_domain.com/api/v1/companies/?page=1获得前 20 名,?page=2将给第 21 家公司到第 40 家公司,依此类推。(不指定?page=就像做?page=1)
在您AngularJS这边,您将维护一些变量,用于保存接下来要获取的页码。现在,您可以将 API 请求绑定到某些Load More类型按钮上的单击事件,或者您可以检测用户是否已滚动到底部,然后执行 API 请求并获取下一组Company对象。
笔记:
使用不是强制性的PageNumberPagination,您甚至可以使用LimitOffsetPagination或CursorPagination实现您的目标。在此处阅读有关各种分页样式的更多信息
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |