2016-12-09 2 views
1

バックエンドとしてDjangoを使用しているAndroidアプリケーションを作成しようとしています。djangoからバッチでデータを送信する方法

私のアプリケーションで利用可能なすべての製品を表示するリストページがあります。アプリケーションで2000個の製品を使用できると仮定して、これらのデータを10または20のバッチに送信したいとします。

データをバッチに送信する方法について少し混乱します。 可能であれば、いくつかのサンプルコードを提供してください。事前に おかげ

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

    return JsonResponse({'data':data}) 
+3

https://docs.djangoproject.com/en/1.10/topics/pagination/ –

答えて

1

あなたはより多くの細部はあなたのケースでは、ここでPagination

マニュアルを確認するために、あなたのような何かを行うことができ、それを達成するためにはDjango Paginatorを使用することができます。

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}) 
+0

はJSONのシリアル化可能ではありません」 –

+0

'products'の代わりに' products.object_list'を使用します。 – ettanany

0

をマイフロントエンドコールで次のようにページネーションを使用することをおすすめします。 -

views.py

あなたはこのような何か(角JS)をコーディングすることができます前端部に
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") 

: -

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(); 
       } 
     } 
関連する問題