2016-06-02 9 views
0

Ich habe ein Django-Backend und aus meiner Sicht möchte ich eine Liste von JSON-Objekten zurückgeben.Django Liste von JSON-Objekten

@api_view(('GET',)) 
def get_analytics(request): 
    # Number of users who dogged in once to our system today 
    login_count= User.objects.filter(last_login__startswith= 
     timezone.now().date()).count() # returns int 
    finished_count = Exercise_state.objects.filter(exercise_id=7, progress=2).count() 
    # returns int 

    count_list=[] 
    count_list.append(login_count) 
    count_list.append(finished_count) 

    data = {} 
    data['login_count'] = login_count 
    data['finish_count'] = finished_count 
    json_data = json.dumps(data) 

    return Response(json_data) 

Das gibt "{\"finish_count\": 1, \"login_count\": 2}" aber was ich will, ist so etwas wie [{"login_count": 2, "finished_count": 3}]

Wie kann ich das erreichen?

Antwort

1

Verwenden JsonResponse statt, um das json Objekt richtig zu analysieren:

from django.http import JsonResponse 

dann können Sie Ihr Original dict Objekt verwenden:

return JsonResponse(data) 
2

Sie benötigen JsonResponse. Aber wenn Sie es verwenden, brauchen Sie nicht json.dumps(data), JsonResponse Dosis für Sie. Zitiert aus django doc:

>>> from django.http import JsonResponse 
>>> response = JsonResponse({'foo': 'bar'}) 
>>> response.content 
b'{"foo": "bar"}' 

Wenn Sie django < 1.7 verwenden, tun (es in späteren Versionen noch vorhanden ist, aber JsonResponse macht es eaiser):

return HttpResponse(json.dumps(data), content_type="application/json") 
Verwandte Themen