Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django Rest框架中使用无限滚动?_Python_Django_Rest_Django Rest Framework_Infinite Scroll - Fatal编程技术网

Python 在Django Rest框架中使用无限滚动?

Python 在Django Rest框架中使用无限滚动?,python,django,rest,django-rest-framework,infinite-scroll,Python,Django,Rest,Django Rest Framework,Infinite Scroll,我正在使用Django REST框架创建一个REST API。API将提供大量数据,我想在页面上使用无限滚动。我想用Angular作为前端。我不知道如何为数据提供服务,以便不是所有数据都必须发送一次,而是仅在用户向下滚动时发送 我正在使用序列化程序类- class CompanySerializer(serializers.ModelSerializer): class Meta: model = Company fields = ('company_na

我正在使用Django REST框架创建一个REST API。API将提供大量数据,我想在页面上使用无限滚动。我想用Angular作为前端。我不知道如何为数据提供服务,以便不是所有数据都必须发送一次,而是仅在用户向下滚动时发送

我正在使用序列化程序类-

class CompanySerializer(serializers.ModelSerializer):
    class Meta:
        model = Company
        fields = ('company_name', 'location', 'founded_year')
我不知道如何实施这一点。我应该使用Django无止境分页,还是可以使用Django rest框架提供的分页来完成。我也不确定这个前端将如何工作。这里是网络开发新手,请帮助。

您应该试一试。
我不知道它是否是无限的,但它确实适用于大型集合。

创建一个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
完成后,您可以通过调用来获得前20名,
?page=2
将第21家公司分配给第40家公司,依此类推。(不指定
?page=
就像执行
?page=1

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

注意:


不必使用
PageNumberPagination
,您甚至可以使用
LimitOffsetPagination
CursorPagination
来实现您的目标。了解有关各种分页样式的更多信息

当查询集结束时,是否有方法使偏移量为零?或者以其他方式扩展queryset,使其不会结束?