如何在Restangular和Django Rest Framework中添加分页?

bat*_*man 8 django pagination angularjs django-rest-framework restangular

在DRF中我已经将分页限制添加到100,'PAGINATE_BY': 100, 因为Restangular期望数组形式的结果,我必须在我的角度应用程序模块中使用以下元提取器函数

var app = angular.module("myapp", ["restangular"].config(function(
            RestangularProvider){

  RestangularProvider.setResponseExtractor(function(response, operation, what, url) {
    if (operation === "getList") {
        var newResponse = response.results;
        newResponse._resultmeta = {
            "count": response.count,
            "next": response.next,
            "previous": response.previous
        };
        return newResponse;
    }

    return response;
    });
});
Run Code Online (Sandbox Code Playgroud)

我的控制器看起来像

app.controller('DataCtrl',function($scope, Restangular){

    var resource = Restangular.all('myapp/api/dataendpoint/');
        resource.getList().then(function(data){
        $scope.records = data;
    });    
}
Run Code Online (Sandbox Code Playgroud)

控制器中没有元信息,如果有超过100条记录,我该如何分页?

jsa*_*san 2

我想你可以简单地调用:

RestangularProvider.addResponseExtractor(function(data, operation, what, url, response) {
  if (operation === "getList") {
      data._resultmeta = {
          "count": response.count,
          "next": response.next,
          "previous": response.previous
      };
      return data;
  }

  return response;
});
Run Code Online (Sandbox Code Playgroud)

var page = 2;
var resource = Restangular.all('myapp/api/dataendpoint/');
resource.getList({page: page}).then(function(data){
  console.log(data._resultmeta.next ? 'there is more pages' : 'You reach the end');
});
Run Code Online (Sandbox Code Playgroud)

我不习惯,RectangularDjango Rest Framework 支持从查询参数分页