2016-06-02 7 views
0

У меня есть django backend и с моего представления Я хочу вернуть список объектов json.Django список объектов json

@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) 

Это возвращает "{\"finish_count\": 1, \"login_count\": 2}" Однако то, что я хочу что-то вроде [{"login_count": 2, "finished_count": 3}]

Как я могу добиться этого?

ответ

1

Используйте JsonResponse вместо этого, надлежащим образом проанализировать объект json:

from django.http import JsonResponse 

то, вы можете использовать свой оригинальный dict объект:

return JsonResponse(data) 
2

Необходимо JsonResponse. Но если вы собираетесь использовать его, вам не нужны json.dumps(data), JsonResponse доза для вас. Цитируя django doc:

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

Если вы используете Джанго < 1,7, делать (это по-прежнему доступны в более поздних версиях, но JsonResponse делает его eaiser):

return HttpResponse(json.dumps(data), content_type="application/json") 
Смежные вопросы