gpt4 book ai didi

python - 在 Django Rest Framework 中使用无限滚动?

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:03 24 4
gpt4 key购买 nike

我正在使用 Django Rest Framework 创建 REST API。 API 将提供大量数据,我想在页面上使用无限滚动。我想在前端使用 Angular。我不确定如何提供数据,以便不是所有数据都必须发送一次,而是仅当用户向下滚动时才发送。

我正在使用序列化器类 -

class CompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = ('company_name', 'location', 'founded_year')

我不确定如何实现它。我应该使用 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

完成此操作后,您可以通过调用 http://your_domain.com/api/v1/companies/?page=1 获取前 20 个, ?page=2 会将第 21 家公司分配给第 40 家公司,依此类推。 (不指定 ?page= 就像做 ?page=1)

在您的 AngularJS 端,您将维护一些变量,该变量将保存下一个要获取的页码。现在您可以将您的 API 请求绑定(bind)到某些加载更多 类型按钮上的点击事件,或者您可以检测用户是否已滚动到底部,然后执行 API 请求并获取下一组Company 对象。

注意:

PageNumberPagination 不是强制性的,您甚至可以使用 LimitOffsetPaginationCursorPagination 来实现您的目标。阅读有关各种分页样式的更多信息 here

关于python - 在 Django Rest Framework 中使用无限滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38173984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com