如何从django批量发送数据

时间:2016-12-09 10:01:35

标签: python django

我正在尝试创建一个我正在使用Django作为后端的Android应用程序。

我有一个列表页面,向我展示了我的应用程序中可用的所有产品。假设我的应用程序中有2000个产品可用,因此希望将这些数据分批发送到10或20个批次。

所以我对如何批量发送数据感到有点困惑。 尽可能提供一些示例代码。 提前致谢

@csrf_exempt
def ShowProducts(request):
    pro_object = Product.objects.all()
    data = pro_object

    return JsonResponse({'data':data})

3 个答案:

答案 0 :(得分:1)

您可以使用Django Paginator来实现这一目标,有关详细信息,请查看此处的文档Pagination

在您的情况下,您可以执行以下操作:

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.http import JsonResponse

def show_products(request):
    products = Product.objects.all()
    paginator = Paginator(products, 10)  # to show 10 products

    page = request.GET.get('page')
    try:
        products = paginator.page(page)
    except PageNotAnInteger:
        products = paginator.page(1)
    except EmptyPage:
        products = paginator.page(paginator.num_pages)

    return JsonResponse({'data': products.object_list})

答案 1 :(得分:0)

我的建议是在前端呼叫中使用分页如下: -

views.py

class subProjectsList(APIView):

    def get(self, request, format=None):
        pageNo = int(request.GET['pageNo'])
        perPage = int(request.GET['perPage'])
        start_limit = (pageNo-1) * perPage
        end_limit = pageNo * perPage

        productsCount = Product.objects.all().count()
        products = Product.objects.all()[start_limit:end_limit]

        data = {'success':True,'msg':'YourMsg','rows':result,'count':allSubProjectsCount}
        return HttpResponse(json.dumps(data,cls=DjangoJSONEncoder),content_type="application/json")

在前端你可以编写类似这样的代码(Angular JS): -

var pageNo = 1;
var perPage = jo teri marzi;
$scope.result = [];

angular.forEach(response, function (value) {
  $scope.result.push(value);
  });
  $scope.totalCount = response.count;
  if($scope.totalCount > 0){
       if(Math.ceil($scope.totalCount/perPage) !== pageNo){
              pageNo = pageNo + 1;
              callthemethodAgain();
              }
        }

答案 2 :(得分:0)

您可以使用以下其中一项
1. Django休息
http://www.django-rest-framework.org/
2.否则你可以使用django serializers + django pagination
https://docs.djangoproject.com/en/1.10/topics/serialization/
https://docs.djangoproject.com/en/1.10/topics/pagination/

相关问题